一。类的继承
1。存在A类与B类,B类继承A类,B类继续所有A类的属性和方法。来看例子:
Student.java
说明:
(1):继承关键字extends实现,继承可以简化类的定义。
(2):Java中只允许单继承,一个子类只能有一个父类,一个父类可以有多个子类。
(3):B类继承A类,C类继承B类,那么C即间接的继承了A类的所有的属性和方法。
(4):子类继承所有父类属性和行为,但是不继承构造方法。但是可以在子类中使用super调用你类的构造方法。
看例子:
如果子类没有调用父类的构造方法,也没有使用this关键字调用重载构造方法,则创建的子类的实例对象,系统默认调用父类无参数的构造函数
2:子类可以修改从父类继承来的方法,即为方法的重写
例子:
3.final关键字
(1)适用于修饰类、属性、方法及变量
(2)final修饰的类不被继承。方法不被子类重写
(3)final标记的变量即为常量,只能进行一次赋值
注:其实理解了final这个单词的意思也就好理解了,final当名词用时为结局的意思,当形容词用的时候为最后的,最终的,:)补充一下外语,要不为什么老外学种语言那么容易!
看几个小例子
另外public static final x=5;x即为全局变量
二。抽象类与接口
1。抽象方法:在方法前以abstract修饰的方法即为抽象方法,包括抽象方法的类即为抽象类。抽象类也必须以abstract修饰。
抽象方法的格式:abstract 返回值类型 抽象方法(参数列表)
(1)抽象方法和抽象类必须以abstract修饰。
(2)抽象方法只是声明,而不实现。
(3)抽象类不能被实例化,即不能new。
(4)抽象类中所有的抽象方法被子类重写后,抽象类才能被实例化。
(5)抽象类中肯定有抽象方法,但不一定抽象类中全是抽象方法。
例子:
2。接口:一个抽象类的所有方法全是抽象方法即为接口,其实接口也发球属于抽象类中一种比较特殊的格式。
(1)以关键字interface标记
(2)接口中只能包括常量(public static fianl也是属于其中)和抽象方法
(3)也只是声明,而没有实现,需要子类的重写
看一个接口的例子
1。存在A类与B类,B类继承A类,B类继续所有A类的属性和方法。来看例子:
Student.java
class Person { public String name; public int age; public Person(String name,int age) { this.name=name; this.age=age; } public Person() //如果不写这个构造函数,看看对类Student有什么影响。 { } public void getInfo() { System.out.println(name); System.out.println(age); } } class Student extends Person { public void study() { System.out.println("Studding"); } public static void main(String[] args) { Person p=new Person(); p.name="person"; p.age=30; p.getInfo(); Student s=new Student(); s.name="student"; s.age=16; s.getInfo(); s.study(); } }
说明:
(1):继承关键字extends实现,继承可以简化类的定义。
(2):Java中只允许单继承,一个子类只能有一个父类,一个父类可以有多个子类。
(3):B类继承A类,C类继承B类,那么C即间接的继承了A类的所有的属性和方法。
(4):子类继承所有父类属性和行为,但是不继承构造方法。但是可以在子类中使用super调用你类的构造方法。
看例子:
class Student extends Person { public Student(String name,int age,String school) { super(name,age); this.school=school; } }
如果子类没有调用父类的构造方法,也没有使用this关键字调用重载构造方法,则创建的子类的实例对象,系统默认调用父类无参数的构造函数
2:子类可以修改从父类继承来的方法,即为方法的重写
例子:
class Person { public String name; public int age; public void getInfo() { System.out.println(name); System.out.println(age); } } class Student1 extends Person { String school = new String(); public void getInfo()//方法的覆盖 { super.getInfo();//super继承Person类的getInfo方法 System.out.println(school); } public static void main(String []args) { Person p1 = new Person(); p1.name="Jack"; p1.age=26; p1.getInfo(); Student1 s1 = new Student1(); s1.name="Marry"; s1.age=30; s1.school="NanKai University"; s1.getInfo(); } }
3.final关键字
(1)适用于修饰类、属性、方法及变量
(2)final修饰的类不被继承。方法不被子类重写
(3)final标记的变量即为常量,只能进行一次赋值
注:其实理解了final这个单词的意思也就好理解了,final当名词用时为结局的意思,当形容词用的时候为最后的,最终的,:)补充一下外语,要不为什么老外学种语言那么容易!
看几个小例子
final int x=5;//必须显示赋值 x=3;//错误的例子,final标记的变量即为常量,只能进行一次赋值
另外public static final x=5;x即为全局变量
二。抽象类与接口
1。抽象方法:在方法前以abstract修饰的方法即为抽象方法,包括抽象方法的类即为抽象类。抽象类也必须以abstract修饰。
抽象方法的格式:abstract 返回值类型 抽象方法(参数列表)
(1)抽象方法和抽象类必须以abstract修饰。
(2)抽象方法只是声明,而不实现。
(3)抽象类不能被实例化,即不能new。
(4)抽象类中所有的抽象方法被子类重写后,抽象类才能被实例化。
(5)抽象类中肯定有抽象方法,但不一定抽象类中全是抽象方法。
例子:
abstract class Test() { abstract void Info() { } }
2。接口:一个抽象类的所有方法全是抽象方法即为接口,其实接口也发球属于抽象类中一种比较特殊的格式。
(1)以关键字interface标记
(2)接口中只能包括常量(public static fianl也是属于其中)和抽象方法
(3)也只是声明,而没有实现,需要子类的重写
看一个接口的例子
abstract class Test() { abstract void Info() { } abstract void Mar() { } }
回复Comments
作者:
{commentrecontent}