1、 s1.age = 18; System.out.println( s1.getInfo() ); class Student static String classID; /班级编号 String name; /学生姓名 int age; /学生年龄 String getInfo() return classID + + name + + age;3、public class Test s1.name = Student s2 = new Student(); s2.classID = s2.name = s2.age = 20; System.out.println(s1.getInfo(
2、); System.out.println(s2.getInfo();090932/Tom/184、public class TestStudent Student s1 = new Student(“Tom”, 18); int age = 15; Student( String n, int a ) /构造方法 name = n; age = a; return name + Tom/185、Java语言中,允许一个类可以有多个构造方法class Box double length; double width; double height; Box(double l, double w,
3、double h) length = l;width = w;height = h; Box(double x) length = x; width = x; height = x; double getVol() return length * width * height;6、public class TestBook Book book1 = new Book(Java,25) String getInfo()return title= + title + , price= + price; String getTitle()return title; ; System.out.prin
4、tln(book1.getInfo(); Book book2 = new Book(,25); System.out.println(book2.getInfo();class Book String title; int price; Book(String t, int p)title = t; price = p; String getInfo()return title + 7、局部内部类public class Outer private int x = 1; public void f(final int y) int z =2; class Inner public Inner
5、() / 定义局部内部类 System.out.println(“x=”+x+”y=”+y); / 可以访问x与y,不能访问z8、public class Test System.out.println(new Student().id);class Person String name, sex;class Student extends Person String id;说明:若子类和父类都没有定义构造方法,则创建子类对象时,系统将调用父类的无参数构造方法。9、public class Test (错的) Student( ) Student(String id) this.id = id
6、;若子类有含参数构造方法,但没有无参数构造方法,则创建子类对象时,必须使用含参数构造方法。10、public class Test System.out.println(new Student(“0801”).id); Person( ) name = 张三 sex = 男 Student(String id) this.id = id;若子类有构造方法,则创建子类对象时,系统将首先隐含调用父类的无参数构造方法,然后调用子类自己的构造方法。11、public class Test System.out.println(new Student().id); Person( ) Person( S
7、tring n, String s ) sex = s; Student( String n, String s, String id) super(n, s); this.id = id;若子类有构造方法,且在其中的首句使用super显式调用父类的构造方法,则创建子类对象时,系统将不再隐含调用父类的无参数构造方法。12、子类对象初始化顺序通过new关键字为子类对象分配内存空间父类静态成员变量显式初始化子类静态成员变量显式初始化父类实例成员变量显式初始化父类构造方法子类实例成员变量显式初始化子类构造方法得到子类对象class Animal public Animal() System.out.
8、println(Animal);class Cat extends Animal public Cat() System.out.println(Catclass Store public Store() System.out.println(Storepublic class Petstore extends Store private Cat cat = new Cat(); public Petstore() System.out.println(Petstore new Petstore();Store Animal Cat Petstore13、父类的引用变量指向子类对象(1)pub
9、lic class Animal void run() System.out.println(An animal is running. Animal a = new Dog(); a.run();class Dog extends Animal A dog is running.形象理解:对a来说,它把Dog对象当作了Animal对象(即子类对象可当作父类对象使用)14、父类的引用变量指向子类对象(2) void run() System.out.println(animal run. void act() run(); a.act(); protected void run() dog r
10、un.15、class Book String title, author; void getInfo() System.out.println( title + “,” + author ); String id, name; System.out.println( id + “,” + name );public class Test1 public static void main( String args ) 一个程序中出现了同名方法16、class Book class EBook extends Book /电子书 String url; /网址 super.getInfo();
11、System.out.println( url );public class Test2 public static void main( String args ) 继承引发的多态性方法覆盖17、class MyMath static int sum( int x, int y ) return x + y; static int sum( int x, int y, int z ) return x + y + z; static int sum( float x, float y ) (错的) static float sum( int x, int y ) public class T
12、est3 封装引发的多态性方法重载18、class Book Book( String t, String a ) title = t; author = a;class EBook extends Book EBook( String t, String a, String u ) super( t, a ); url = u;public class Test4 public static void main( String args ) Book book = new EBook( “Java编程”, “张三”, “http:”); System.out.println( book.ur
13、l );对象引用引发的多态性,子类对象可当作父类对象使用19、窘境:构造方法中引用动态绑定方法1class A int sum( int x, int y ) return x + y; A() System.out.println(this.sum(4, 6);class B extends A public B() protected int sum( int x, int y ) return x * 10 + y * 10;public class Test new B(); /不要在父类构造方法中调用被子类重写的方法 20、窘境:构造方法中引用动态绑定方法2public class
14、Test03 public static void main(String args) new B(5); void show() System.out.println(A.show() public A() this.show(); private int x; public B(int x) System.out.println(this.x); this.x = x; x = 2;B.show(), x= + x);输出:B.show(), x=0 2 521、算术运算异常的捕获和处理import java.io.*;public class UseException public st
15、atic void main(String args) try int a , b;a = Integer.parseInt(args0);b = Integer.parseInt(args1);System.out.println(a+ / + b + = + (a/b); catch (ArithmeticException e) System.out.println(捕获了一个异常,除数不能为0!22、异常处理例class TestException /该类的方法中会抛出异常 private int i; private int array = 1,2,3,4,5; /定义一个含5个元素
16、的数组 void m1() /该方法中会出现数组下标越界异常,且无处理 for (int j=0 ;j=3) throw new UserException(下标偏大 / end of m3() /end of class TestExceptionclass UserException extends Exception /自定义异常类 public UserException(String msg) super(msg);23、一维数组静态初始化数组成员是引用类型的也可静态初始化Point pa = new Point(1,4), new Point(3,9) ;class Point i
17、nt x,y; Point(int a,int b) x = a; y = b; 24、一维数组动态初始化数组定义与为数组分配空间和赋值分开进行 int a = new int3;a0 = 1; a1 = 5;同样,引用类型的数组成员也可动态初始化 Point pa = new Point3 ; pa0= new Point(1,4); pa1= new Point(3,9); class Point y = b; 课堂习题1、对于类Book,下列选项中,正确的构造函数定义是( C )A. book(title String, author String) Bbook(title, autho
18、r)CBook(String title, String author) DBook(title, author) 2、以下选项中,( B )是对父类方法String getInfo( )的覆盖A. int getInfo( ) BString getInfo( )CString getInfo( String s ) DString getInfo( int i )3、关于方法的重载,以下叙述错误的是:( C )A. 方法的重载是通过在一个类中定义同名方法实现的B重载根据不同的形式参数列表来区分同名的不同方法C方法的重载是继承的一种表现D重载方法的方法名相同,是因为它们的最终功能和目标相同4
19、、下列选项中,( A )不是方法public void print( )的重载方法A. public String print( String x ) Bpublic void print( char x )Cpublic void print( int x ) Dpublic void print( String x )5、public class Test /定义主类Test Dog dog = new Dog( ); dog.run( ); Runner horse = new Horse( ); Test.run( horse ); void run( Runner r ) r.run( );interface Runner void run( );class Dog implements
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2