一。类的继承
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()
{
}
}