java新手笔记14 类继承示例
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();
}
}
java新手笔记14 类继承示例的更多相关文章
- java新手笔记9 类的封装示例
1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...
- java新手笔记18 类比较
1.Shap类 package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 // ...
- java新手笔记5 类
1.进制转换 /* 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时, 低于10万元的部分按10%提成,高于10万元的部分,可提成7.5 ...
- java新手笔记11 类的静态属性、方法(单例)
1.Person类 package com.yfs.javase; public class Person { String name;//每个对象上分配 与对象绑定 int age; char se ...
- JAVA自学笔记14
JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...
- c++中的类(class)-----笔记(类继承)
1,派生类继承了基类的所有成员函数和数据成员(构造函数.析构函数和操作符重载函数外). 2,当不指明继承方式时,默认为私有继承. 3,基类的私有成员仅在基类中可见,在派生类中是不可见的.基类的私有成员 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- Java的对象与类,继承
Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...
随机推荐
- Bzoj 1562: [NOI2009]变换序列 匈牙利算法,二分图匹配
题目: http://cojs.tk/cogs/problem/problem.php?pid=409 409. [NOI2009]变换序列 ★★☆ 输入文件:transform.in 输出文 ...
- ubuntu usb权限问题解决
在/etc/udev/rules.d/ 创建51-android.rules SUBSYSTEM==" SUBSYSTEM=="
- POJ1836 - Alignment(LIS)
题目大意 一队士兵排成一条直线,问最少出队几个士兵,使得队里的每个士兵都可以看到又端点或者左端点 题解 从左往右搞一遍LIS,然后从右往左搞一遍LIS,然后枚举即可... 代码: #include&l ...
- if
语句快中的变量与函数的局部变量关系;
- 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起
话说,平凡之处显真格,这一点也没错! 比如,对旋转图像进行双线性插值,很简单吧? 可,对我,折腾了大半天,也没有达到预期效果! 尤其是三个误区让我抓瞎好久: 1,坐标旋转公式. 这东西,要用 ...
- php的fread函数的一个巨大的坑
先看看fread的manual,如下: http://php.net/manual/en/function.fread.php fread() reads up to length bytes fro ...
- jq问题处理
1.同一个事件,点击显示和隐藏 $(document).ready(function(){ $('.container .nav-header').click(function(){ var chan ...
- 1514:数值的整数次方 @jobdu
题目1514:数值的整数次方 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:377 解决:103 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent. ...
- Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面
Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面.上网问了问百 ...
- jfinal获取当前访问路径和端口号
public void generateSingleLicense() throws Exception { System.out.println(getRequest().getRequestURL ...