java 类继承实例_java新手笔记14 类继承示例

这篇博客介绍了Java中的Person、Student和Teacher类的定义,展示了类的继承、构造方法、成员变量和方法的使用。通过Demo1和Demo2的示例,解释了对象的创建、方法调用以及多态的概念,包括父类引用指向子类对象的能力和方法覆盖。此外,还讨论了类型转换和对象的实际类型检查的重要性。
摘要由CSDN通过智能技术生成

1.Person

package com.yfs.javase;

public class Person {

private String name;

private int age;

private char sex;

private void privateMehtod() {

System.out.println("call privateMehtod()...");

}

public Person() {

//System.out.println("创建Perosn对象...");

}

public Person(String name) {

this.name = name;

}

public Person(String name, int age, char sex) {

this.name = name;

this.age = age;

this.sex = sex;

}

public void introduce() {

System.out.println("I am Person....");

}

public String toString() {

return "姓名:" + name + " 年龄 :" + age + " 性别:" + sex;

}

public void speak() {

System.out.println(name + " 工作了吗?");

}

public void sleep() {

System.out.println(name + " 睡觉了吗?");

}

public void eat() {

System.out.println(name + " 吃了吗?");

}

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;

}

public char getSex() {

return sex;

}

public void setSex(char sex) {

this.sex = sex;

}

}

2.Student

package com.yfs.javase;

//实现代码重用 单继承

public class Student extends Person {// 继承Person

private int score;

@Override

public void introduce() {

System.out.println("I am student...");

}

// 覆盖 重写父类的方法

@Override

public String toString() {

return super.toString() + " 成绩:" + score;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

public Student() {

System.out.println("创建Student对象...");

}

// 扩展方法

public void study() {

System.out.println(getName() + " 在学习...");

}

}

3.Teacher

package com.yfs.javase;

public class Teacher extends Person {

private String job;

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

@Override

public void introduce() {

System.out.println("I am teacher...");

}

}

4.test1

package com.yfs.javase;

public class Demo1 {

public static void main(String[] args) {

Person p1 = new Person();

p1.setName("张三");

Student s1 = new Student();

s1.setName("李四");

Teacher t1 = new Teacher();

t1.setName("王五");

p1.speak();

s1.speak();

s1.study();

t1.introduce();

//s1 = t1;//类型不匹配 都是person子类

//p1.study(); 子类的方法属性不能访问

//里氏替换

Person p2 = s1;//父类的引用指向子类对象

p2 = new Student();

p2.setName("Tom");

p2.sleep();

//对象操作由声明类型决定

//p2.study();//计算机技术人员

//具体执行由对象决定 p2 中具体是什么对象

p2 = new Teacher();

//多态 方法覆盖

p2.introduce();//父类声明的方法 子类覆盖父类的方法

}

}

5.test2

package com.yfs.javase;

public class Demo2 {

public static void main(String[] args) {

Person p1 = new Person();

p1.setName("张三");

Student s1 = new Student();

s1.setName("李四");

Teacher t1 = new Teacher();

t1.setName("王五");

Person p2 = new Student();

p2.setName("Tom");

//变回去 强制转换

Student s2 = (Student)p2;

s2.study();

//Teacher t2 = (Teacher)p2;

//查看对象的类型 getClass()

System.out.println(p2.getClass().getName());

System.out.println(t1.getClass().getName());

//s1 = p1;

p1 = s1;

System.out.println(p1);

System.out.println(s1);

s1.setAge(20);

p1.setSex('男');

System.out.println(p1);

System.out.println(s1);

//p1.study();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值