java 基础4 特性 封装 继承 多态
来源:互联网 发布:创维电视怎么连接网络 编辑:程序博客网 时间:2024/05/01 01:26
为什么需要继承
// 小学生类class Pri{//定义成员属性private int age;private String name;private float fee;//交费 public void pay(float fee){this.fee=fee;}}// 中学生类class Middle{//定义成员属性private int age;private String name;private float fee;//交费 public void pay(float fee){this.fee=fee*0.8f;}}// 大学生类class University{//定义成员属性private int age;private String name;private float fee;//交费 public void pay(float fee){this.fee=fee*0.5f;}}学生都有 岁数名字 学费
继承 语法
class 子类 extends 父类
//学生类 class Stu{public int age;public String name;public float fee;}// 小学生类class Pri extends Stu{//交费 public void pay(float fee){this.fee=fee;}}// 中学生类class Middle extends Stu{//交费 public void pay(float fee){this.fee=fee*0.8f;}}// 大学生类class University extends Stu{public void pay(float fee){this.fee=fee*0.5f;}}
能够继承的东西
public 方法 属性
protect 方法 属性
默认 方法 属性
注意
1. 只能继承一个类
2.所有的类都是object 的子类
多态 重载 和 覆盖
方法重载 overload 根本上是一种方法的多种实现方式 取决于调用者给出的参数
class Calculate{public int getmax(int a,int b){if(a>b){System.out.println(a);return a;}else{System.out.println(b);return b;}}public float getmax(float a,float b){return a;}}
如果只是返回类型不一样 不行!
如果只是访问控制符 不行!
方法名相同
方法的 参数类型 个数 顺序 至少有一项不同
方法返回类型可以不同
方法的修饰符可以不同
覆盖
子类有一个方法 和 父类的 某个方法的 名称 返回类型 参数 一样
就叫做 子类这个方法覆盖了 父类的方法
public class flow {public static void main(String[] args) {cat cat1=new cat();cat1.cry();dog dog1= new dog();dog1.cry(); }}class Animal{int age ; String name; public void cry(){ System.out.println ("jiao"); }}class cat extends Animal{public void cry(){System.out.println("miaoniao");}}class dog extends Animal{public void cry(){System.out.println("www");} }
两点注意 子类的方法的 返回类型 参数 方法名称 和父类一样 否则编译出错
子类方法 不能缩小父类的访问权限 父类 public 子类不可以是 protected
相反可以 父类可以是 protected 子类是 public
多态
一个引用 或者说 一个(类型) 在不同情况下的 多种状态
通过指向父类的指针,来调用在不同子类中的方法
要注意的是 animal 里边的cry 方法必须留着 否则没法通过父类 调用子类的方法
如果 cat 或者 dog 里边没有 eat 方法 an.cry() 就输出 unknow
public class flow {public static void main(String[] args) {//多态Cat cat = new Cat();cat.cry();Dog dog= new Dog();dog.cry();Animal an = new Cat();an.cry();an= new Dog();an.cry(); }}class Animal{ int age; String name; public void cry(){ System.out.println("unknow"); }}class Cat extends Animal{public void cry(){System.out.println("mmm");}}class Dog extends Animal{public void cry(){System.out.println("www");}}
输出的是
mmm
www
mmm
www
public class flow {public static void main(String[] args) {//多态new Master().feed(new Cat(), new Fish());new Master().feed(new Dog(), new meat());}}class Master{//给动物feed 使用多态 方法就可以用一个public void feed(Animal an,Food fo){an.eat();fo.showname();}}class Animal{ int age; String name; public void cry(){ System.out.println("unknow"); } public void eat(){ System.out.println("unknow"); }}class Cat extends Animal{public void cry(){System.out.println("mmm");}public void eat(){System.out.println("prefer fish"); }}class Dog extends Animal{public void cry(){System.out.println("www");}public void eat(){System.out.println("prefer meat"); }}class Food{String name;public void showname(){}}class Fish extends Food{public void showname(){System.out.println("fish");}}class meat extends Food{public void showname(){System.out.println("meat");}}
可以把子类的引用 交给父类 cat cat1 = new cat() Animal an = cat1
某些情况下 可以反过来转换
0 0
- java 基础4 特性 封装 继承 多态
- Java基础--封装、继承、多态
- java基础---封装、继承、多态
- java基础- 封装,继承,多态
- java基础-继承-封装-多态
- Java基础--封装、继承、多态
- java三大特性:封装、继承、多态
- java 三大特性 封装 继承 多态
- Java三大特性,封装、继承、多态
- Java三大特性---封装,继承,多态
- Java三大特性(封装,继承,多态)
- Java基础<六>---> 面向对象与java特性(封装、继承、多态
- java语言基础(23)——面向对象三大特性(封装、继承、多态)
- Java基础-面向对象(封装、继承、多态)
- Java基础——封装、继承、多态
- java基础 继承、封装、多态、抽象详解
- java的基本特性:封装,继承,多态,可移植性
- Java--面向对象的特性(封装,继承,多态)学习
- 【学习笔记】C#中HashTable和快速排序的用法,从单词频率统计小程序写起
- 设计模式Builder(建造者)模式
- 基于Discuz的原生态MVC框架Uxf
- 歌德巴赫猜想
- linux 端口映射
- java 基础4 特性 封装 继承 多态
- ANR
- C++变量对齐
- vsftp配置指南
- note : make a class, use wininet api upload http file
- Linux MBR
- MiniUI - 快速开发WebUI
- 【JS】angular和require的区别
- 黑马程序员 Java基础学习笔记5 类