欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JAVA之继承,

来源: javaer 分享于  点击 26566 次 点评:101

JAVA之继承,


JAVA三大特性之继承

一:概念

    继承是类与类之间的关系,并且在java中,一个类只有一个父类,也就是单继承的关系。

二:好处/优点

    1):子类拥有父类的所有属性和方法(private修饰的无效)    

    2):可以实现代码的复用

三:语法规则

    class 子类 extends 父类{....}

public class Animal {   //父类Animal
	public int age;
	public String name;
	public void eat(){
		System.out.println("动物具有吃东西的能力");;
	}
}
public class Dog extends Animal{}//子类Dog继承父类Animal
public class Init {               //测试类
	public static void main(String[] args) {
		Dog dog=new Dog();
		dog.age=10;
		dog.name="xiaobai";
		dog.eat();
	}
}

四:方法的重写

    如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时,会优先调用子类重写的方法

    语法规则:返回值类型,方法名,参数类型和个数都要与父类继承的方法相同,才叫方法的重写。

五:继承初始化顺序

    1:初始化父类再初始子类

    2:先执行初始化对象中属性,再执行构造方法中的初始化。

    也就是父类-->父类中的属性-->父类的构造方法-->子类-->子类中的属性-->子类的构造方法

//父类
public class Animal {
	public int age=5;
	public String name;
	public void eat(){
		System.out.println("动物具有吃东西的能力");;
	}
	public Animal(){
		age=20;
		System.out.println("Animal类的构造方法执行了!");
	}
}
//子类
public class Dog extends Animal{	
	public Dog(){
		System.out.println("Dog类的构造方法执行了!");
	}
}
//初始化类
public class Init {
	public static void main(String[] args) {
		Animal animal=new Animal();
		System.out.println("Animal age="+animal.age);
		Dog dog=new Dog();
	}
}

运行结果为:

    

六:final关键字

    final修饰类,则该类不允许被继承

    final修饰方法,则该方法不允许被覆盖(重写)

    final修饰属性,则该属性不会进行隐式的初始化(类的初始化属性必须要有值)或在构造方法中赋值(但只能选其一)

    final修饰变量,则该变量的值只能赋一次值,即变为常量.

七:super关键字

    在对象的内部使用,可以代表父类对象。使用规则为:super.属性/方法

    子类的构造过程当中必须调用其父类的构造方法.。

   super的应用:

        1):如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法.

        2):如果显示的调用构造方法,则必须出现在子类的构造方法的第一行

        如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。

//父类
public class Animal {
	public int age=10;
	public String name;
	public void eat(){
		System.out.println("动物具有吃东西的能力");;
	}
	public Animal(){
		System.out.println("父类的构造方法执行了!");;
	}
}
//子类
public class Dog extends Animal{	
	public Dog(){
		super();//这句代码是隐式创建的。
		System.out.println("子类的构造方法执行了!");
	}
}
//测试类
public class Init {
	public static void main(String[] args) {
		Dog dog=new Dog();
	}
}

运行结果:

    

八: Object类

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类

    1:toString()方法

        在Object类里面定义toString()方法的时候返回的对象的哈希码(对象地址字符串)

        可以通过重写toString()方法表示出对象的属性

//父类
public class Animal {
	public int age=10;
	public void eat(){
		System.out.println("动物具有吃东西的能力");;
	}
	@Override
	public String toString() {
		return "Animal [age=" + age + "]";
	}	
}
//子类
public class Dog extends Animal{}
//测试类
public class Init {
	public static void main(String[] args) {
		Dog dog=new Dog();
		System.out.println(dog);
	}
}

运行结果:

    

    2:equals()方法

        用来比较的是对象的引用是否指向同一内存地址

//父类
 public class Animal {
	public int age=10;
	public void eat(){
		System.out.println("动物具有吃东西的能力");;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Animal other = (Animal) obj;
		if (age != other.age)
			return false;
		return true;
	}	
}
//子类
public class Dog extends Animal{}
//测试类
public class Init {
	public static void main(String[] args) {
		Dog dog=new Dog();
		Dog dog1=new Dog();
		dog.age=15;
		dog1.age=15;
		if(dog.equals(dog1)){
			System.out.println("两个对象是一样的");
		}
		else{
			System.out.println("两个对象是不一样的");
		}
	}
}

相关文章

    暂无相关文章
相关栏目:

用户点评