JAVA学习【知】继承
2008-11-16 22:41
232 查看
继承的定义
1.JAVA中是有extends关键字实现类的继承机制
2.通过继承,子类自动拥有基类的所有成员(成员变量和方法)
3JAVA支持单继承,不允许多继承。
4.一个子类只能拥有一个基类,一个基类能派生出多个子类(这就相当于我们现实生活中,一个孩子只有一父亲,但一个父亲可能养着一群孩子)。
我们用一个例子来论证以上的定义:
class Animal{
String name;
public void setname(String name){ //设置父类名字
this.name=name;
}
public String getname(){
return name; //返回名字
}
}
class Dog extends Animal{ //继承Animal类
int age;
public void setage(int age){ //Dog类自己的方法
this.age=age;
}
public int getage(){
return age; //返回DOG的年龄
}
}
public class TestExtends {
public static void main(String[] args) {
Animal a= new Animal();
Dog d = new Dog();
a.setname(" Animal name");
d.setage(5);
d.setname("dogname");
System.out.println("name:"+a.getname());
System.out.println("Dog's name:"+d.getname()); //dog所继承的
System.out.println("Dog's age:"+d.getage());
}
}
//由于Dog类继承了父类 所以就继承了父类的方法不必再子类定义,而本身独有的方法是父类不可调用的。
现在我们来看下继承中的构造方法
定义:
1.子类的构造的过程必须调用其基类的构造方法。
2.子类可以在自己的构造方法中使用super(参数列表)调用基本的构造方法。
3.如果调用super,必须写在第一行。
4.如果子类的构造方法中没有显示地调用其基类的构造方法则系统默认调用基类无参数的构造方法。
4.如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。
继承的好处:
可以享有父类的方法,得到自己想要的东西,不必再次定义。程序变的更加灵活。
举例:
class Dog {
String name;
Dog(){
System.out.println("i am Dog");
}
Dog(String name){
System.out.println("DOG's name:"+name);
}
}
class Cat extends Dog{
Cat(){
super(); //调用父类构造方法,也可省略,则默认为空的构造方法
System.out.println("I am Cat");
}
Cat(String name)
{ //此处没显示调用父类构造方法,所以默认为空的构造方法
System.out.println("Cat'sname:"+name);
}
}
public class TestSuper {
public static void main(String[] args) {
Dog d = new Dog();
new Dog("dogname");
Cat c = new Cat();
new Cat("MIMI");
}
}
i am Dog //父类 无参构造方法返回值
DOG's name:dogname //有参构造方法返回值
i am Dog //继承的子类调用的父类构造方法返回的值
I am Cat //子类构造方法返回值
i am Dog //继承的子类调用的父类构造方法返回的值
Cat'sname:MIMI //子类构造方法返回值
通过对继承的学习能让我们增加程序灵活性,更加方便,对以后学习多态也起着重要的作用。
1.JAVA中是有extends关键字实现类的继承机制
2.通过继承,子类自动拥有基类的所有成员(成员变量和方法)
3JAVA支持单继承,不允许多继承。
4.一个子类只能拥有一个基类,一个基类能派生出多个子类(这就相当于我们现实生活中,一个孩子只有一父亲,但一个父亲可能养着一群孩子)。
我们用一个例子来论证以上的定义:
class Animal{
String name;
public void setname(String name){ //设置父类名字
this.name=name;
}
public String getname(){
return name; //返回名字
}
}
class Dog extends Animal{ //继承Animal类
int age;
public void setage(int age){ //Dog类自己的方法
this.age=age;
}
public int getage(){
return age; //返回DOG的年龄
}
}
public class TestExtends {
public static void main(String[] args) {
Animal a= new Animal();
Dog d = new Dog();
a.setname(" Animal name");
d.setage(5);
d.setname("dogname");
System.out.println("name:"+a.getname());
System.out.println("Dog's name:"+d.getname()); //dog所继承的
System.out.println("Dog's age:"+d.getage());
}
}
//由于Dog类继承了父类 所以就继承了父类的方法不必再子类定义,而本身独有的方法是父类不可调用的。
现在我们来看下继承中的构造方法
定义:
1.子类的构造的过程必须调用其基类的构造方法。
2.子类可以在自己的构造方法中使用super(参数列表)调用基本的构造方法。
3.如果调用super,必须写在第一行。
4.如果子类的构造方法中没有显示地调用其基类的构造方法则系统默认调用基类无参数的构造方法。
4.如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。
继承的好处:
可以享有父类的方法,得到自己想要的东西,不必再次定义。程序变的更加灵活。
举例:
class Dog {
String name;
Dog(){
System.out.println("i am Dog");
}
Dog(String name){
System.out.println("DOG's name:"+name);
}
}
class Cat extends Dog{
Cat(){
super(); //调用父类构造方法,也可省略,则默认为空的构造方法
System.out.println("I am Cat");
}
Cat(String name)
{ //此处没显示调用父类构造方法,所以默认为空的构造方法
System.out.println("Cat'sname:"+name);
}
}
public class TestSuper {
public static void main(String[] args) {
Dog d = new Dog();
new Dog("dogname");
Cat c = new Cat();
new Cat("MIMI");
}
}
i am Dog //父类 无参构造方法返回值
DOG's name:dogname //有参构造方法返回值
i am Dog //继承的子类调用的父类构造方法返回的值
I am Cat //子类构造方法返回值
i am Dog //继承的子类调用的父类构造方法返回的值
Cat'sname:MIMI //子类构造方法返回值
通过对继承的学习能让我们增加程序灵活性,更加方便,对以后学习多态也起着重要的作用。
相关文章推荐
- java学习之类与继承
- java===java基础学习(11)---继承
- JAVA学习第二十二课(多线程(二))- (多线程的创建方式一 :继承Thread类)
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- java入门学习(6)—封装,继承,多态,this,super,初始代码块
- java学习笔记6--类的继承、Object类
- Java学习笔记-对象-继承-接口-多态-内部类
- Java构造函数的继承-Java 学习笔记 (14)
- Java 学习笔记 ------第六章 继承与多态
- 别样JAVA学习(五)继承上(0.2)接口
- Java学习7:继承详解及用法
- java学习之路---继承
- 别样JAVA学习(六)继承下(2.0)内部类上
- Java系列学习(八)-继承
- 黑马程序员_JAVA学习日记_JAVA中API中Math和Random对象和继承1
- java深入学习七之封装与继承,多态
- java Thread学习-Thread的实现方法 继承Thread,实现Runnable 接口
- 黑马程序员 JAVA学习笔记——java基础 继承
- JAVA学习第三天(4)继承
- JAVA学习笔记---类的继承