Java 继承 封装 多态
程序员文章站
2024-03-16 23:32:16
...
JAVA 面向对象 Day 03 7/13
封装提高安全
封装步骤:1.作用域设置为:private
2. 设置属性的get/set 方法
Get 方法作用:访问属性
Set 方法作用给属性赋值
3.通过get/set方法访问或者给属性赋值。
class frame{
privateintage;
private String name; //封装
publicint getAge(){
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
public String getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
}
-----------------------------------------------------------
Mismatch 不 匹配
方法重载:在同一个类中,方法名相同,参数的个数和类型不同。构造方法亦可重载
类的构造函数无参构造函数如果没有的话,系统会默认提供。
Alt + shift+S 快捷创建有参无参构造函数
类成员的访问修饰符:
作用域 修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
Protected | 可以 | 可以 | 可以 | 不可以 |
Public | 可以 | 可以 | 可以 | 可以 |
This 使用类里面的值 object 是所有类的父类
多态: 同一个引用类型使用不同的实例而执行不同操作,方法重写是实现多态的基础
参数是父类,传过来的传过来的是子类的实例对象
多态根据不同类型的参数,执行不同的操作
重写 (override)
方法重载(overload)
重载与重写的区别:
1、重载:
方法名相同,参数列表不同
2、重写:
也叫覆盖,指在子类中定义一个与父类中方法同名同参数列表的方法。因为子类会继承父类的方法,而重写就是将从父类继承过来的方法重新定义一次,重新填写方法中的代码。
继承 extends java中只支持单根继承,即一个类只能有一个父类
package dierzhou;
class Animal{
String name;
int love;
int health;
public String getName() {
return name;
}
public int getLove() {
return love;
}
public int getHealth() {
return health;
}
public void toStr(){
}
}
class qiEr extends Animal{
public void qiEr(int n) {
if (n==0){
System.out.println(name+"是一个"+"酷酷的Q仔");
}else{
System.out.println(name+"是一个"+"帅帅的Q仔");
}
}
@Override //重写
public void toStr() {
// TODO Auto-generated method stub
super.toStr();
if(this.health<60){
System.out.println("吃药打针后");
this.health=70;
}
}
}
class Dog extends Animal{
String strain;
public String getStrain() {
return strain;
}
public void Dog(int n) {
if (n==0){
System.out.println(name+"是一个"+"酷酷的雪纳瑞");
}else{
System.out.println(name+"是一个"+"聪明的拉布拉多犬");
}
}
@Override //重写
public void toStr() {
// TODO Auto-generated method stub
if(this.health<60){
System.out.println("吃药打针后");
this.health=70;
}
}
}
//多态
class Master{
public void cure(Animal animal){
animal.toStr();
}
}
public class tste {
public static void main(String[] args) {
// TODO Auto-generated method stub
//程序开始时间
long start=System.currentTimeMillis();
qiEr q=new qiEr();
Master m=new Master(); //对象实例化
q.name="小白";
q.love=100;
q.health=49;
System.out.println("我的名字叫:"+q.getName());
System.out.println("生病中我的健康状态是:"+q.getHealth());
m.cure(q);
System.out.println("看病后中我的健康状态是:"+q.getHealth());
// System.out.println("我的名字叫:"+q.getName()+"\t 我的健康状态是:"+q.getHealth()+"\t我和主人的亲密度是:"+q.love);
System.out.println("我和主人的亲密度是:"+q.love);
q.qiEr(1);
Dog d=new Dog();
d.name="小虎";
d.love=100;
d.health=50;
d.strain="拉布拉多";
System.out.println("我的名字叫:"+d.getName()+"\t 我的健康状态是:"+d.getHealth()+"\t我和主人的亲密度是:"+d.love+"\t我的类型为:"+d.strain);
m.cure(d);
System.out.println("我的健康状态是:"+d.getHealth());
d.Dog(2);;
long end=System.currentTimeMillis(); //程序结束时间
System.out.println("程序运行时间"+(end-start)+"ms");
}
}