java7-4 继承的练习

1、Override和Overload的区别,Overload能改变返回值类型吗?

答:

   Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象

    Overload就是方法重载:在同一类中,出现的方法名相同,参数列表不同的现象

    Overload可以改变返回值类型,因为它和返回值类型无关

2、this关键字和super关键字分别代表什么?以及他们各自的使用场景

答:

this:代表当前类的对象引用

super:代表父类存储空间的标识(也就是父类的引用,通过这个可以访问父类的成员)

场景:

成员变量:this.成员变量 super.成员变量

构造方法:this.(...) super(...)

成员方法:this.成员方法 super.成员方法

1、练习:

/*

学生案例和老师案例讲解

学生:

成员变量;姓名,年龄

构造方法:无参,带参

成员方法:getXxx()/setXxx()

老师:

成员变量;姓名,年龄

构造方法:无参,带参

成员方法:getXxx()/setXxx()

看上面两个类的成员,发现了很多相同的东西,所以我们就考虑抽取一个共性的类:

人:

成员变量;姓名,年龄

构造方法:无参,带参

成员方法:getXxx()/setXxx()

学生 继承 人

老师 继承 人

*/

//定义人类

class Person {

//姓名

private String name;

//年龄

private int age;

public Person() {

}

public Person(String name,int age) { //"林青霞",27

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

//定义学生类

class Student extends Person {

public Student() {}

public Student(String name,int age) { //"林青霞",27

//this.name = name;  这样子出错,因为name和age是private的,私人的,这样无法访问的。

//this.age = age;    而如果都不写,则直接走父类的无参构造。结果是 null  0 

super(name,age); //正确的,显示地调用父类的带参构造

}

}

//定义老师类

class Teacher extends Person {
}

class ExtendsTest4 {

public static void main(String[] args) {

//创建学生对象并测试

//方式1

Student s1 = new Student();

s1.setName("林青霞");

s1.setAge(27);

System.out.println(s1.getName()+"---"+s1.getAge());

//方式2

Student s2 = new Student("林青霞",27);

System.out.println(s2.getName()+"---"+s2.getAge());

//补齐老师类中的代码并进行测试。

}

}

2、练习

package java8;

/*

猫狗案例讲解

先找到具体的事物,然后发现具体的事物有共性,才提取出一个父类。

猫:

成员变量:姓名,年龄,颜色

构造方法:无参,带参

成员方法:

getXxx()/setXxx()

eat()

palyGame()

狗:

成员变量:姓名,年龄,颜色

构造方法:无参,带参

成员方法:

getXxx()/setXxx()

eat()

lookDoor()

共性:

成员变量:姓名,年龄,颜色

构造方法:无参,带参

成员方法:

getXxx()/setXxx()

eat()

把共性定义到一个类中,这个类的名字叫:动物。

动物类:

成员变量:姓名,年龄,颜色

构造方法:无参,带参

成员方法:

getXxx()/setXxx()

eat()

猫:

构造方法:无参,带参

成员方法:palyGame()

狗:

构造方法:无参,带参

成员方法:lookDoor()

*/



class dongWu{

// 成员变量

private String name;

private String color;

private int age;

//无参构造方法

public dongWu(){}

//成员方法

public void show(String name,String color,int age){

this.name = name;

this.color = color;

this.age = age;

}

//成员方法

public String getName(){

return name;

}

public String getColor(){

return color;

}

public int getAge(){

return age;

}

public void setName(String name){

this.name = name;

}

public void setColor(String color){

this.color = color;

}

public void setAge(int age){

this.age = age;

}

public void sleep(){

System.out.println("ZZzzz.....");

}

}

class Cat extends dongWu{

//无参构造方法

public Cat(){}

//有参构造方法

public  Cat(String name,String color,int age)

{

super.show(name, color, age);

}

public void play(){

System.out.println("猫玩毛球。。。。");

}

}

class Dog extends dongWu{

//无参构造方法

public Dog(){}

//有参构造方法

public Dog(String name,String color,int age)

{

super.show(name, color, age);

}

public void look(){

System.out.println("看门?犯二!");

}

}

class ExtendsText2{

public static void main(String[] args){

//方法1

Cat c1 = new Cat();

c1.setName("短尾猫");

c1.setColor("虎纹");

c1.setAge(1);

System.out.println(c1.getName()+" "+c1.getColor()+" "+c1.getAge());

c1.play();

Dog d1 = new Dog();

d1.setName("哈士奇");

d1.setColor("白");

d1.setAge(1);

System.out.println(d1.getName()+" "+d1.getColor()+" "+d1.getAge());

d1.look();

//方法2

Cat c2 = new Cat("短尾猫","虎纹",1);

System.out.println(c2.getName()+" "+c2.getColor()+" "+c2.getAge());

c2.play();

Dog d2 = new Dog("二哈","白",1);

System.out.println(d2.getName()+" "+d2.getColor()+" "+d2.getAge());

d2.look();

}

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值