中国建设银行网站登陆,平板微信hd版,湖北网站建设电话,建站流程目录
前言
一.封装
1.1封装的定义
1.2访问修饰符的使用
二.继承 2.1继承的定义
2.2继承的方法
2.3继承使用注意点
三.多态
3,1多态的定义
3.2动态绑定
3.3方法重写
3.4向上#xff08;向下#xff09;转型
四.抽象
4.1抽象的概述和定义 4.2抽象的使用
五…目录
前言
一.封装
1.1封装的定义
1.2访问修饰符的使用
二.继承 2.1继承的定义
2.2继承的方法
2.3继承使用注意点
三.多态
3,1多态的定义
3.2动态绑定
3.3方法重写
3.4向上向下转型
四.抽象
4.1抽象的概述和定义 4.2抽象的使用
五.接口
5.1接口的意义
5.2接口的定义
总结 个人主页 tq02的博客_CSDN博客-C语言,Java领域博主 理想目标努力学习向Java进发拼搏一切找到一份朝九晚五有假期的工作让自己的未来不会有遗憾。 欢迎各位→点赞 收藏⭐ 评论关注✨ 本章讲解内容Java封装、继承、抽象、多态、接口 使用编译器IDEA 前言 在讲述封装、继承、抽象、多态、接口前我们得先了解一下什么是类与对象类与对象的详细讲解tq02的类与对象讲解 一.封装
1.1封装的定义 封装在类里操作将类的成员变量和成员方法进行封装处理意义可以被认为是一个保护屏障防止该类的代码和数据被外部类定义的代码随机访问。而对类进行封装我们需要使用访问修饰符一共分为四种 访问修饰符 private default protected public同一包的同一类 √ √ √ √同一包的不同类 √ √ √不同包的子类 √ √不同包的非子类 √注1.如果成员变量或者成员方法没有使用封装则是默认使用default修饰符。 2.包是存放多个类的容器就是防止在工程建立时和其他人写的类名相同而起冲突。 3.子类是在继承当中可以学到的。
1.2访问修饰符的使用 我们进行四种封装代码实例图
1.private修饰 private修饰的price和name变量其他类无法访问只有自己的类里可以进行访问。就例如在BookList类里无法直接访问这两个元素变量。
2.default修饰 default修饰符是指当你没有标注修饰符时就默认了default修饰符而此类的只有同一个包的其他类访问例如BookList可以访问但不同包的Student类无法访问。
3.protected修饰符 protected修饰符类当被修饰了之后同包下所有的类都可以访问非同包下的其他包的子类也可以使用。如Student类继承之后也可以使用Book类。
4.public修饰符 public修饰符一旦使用所有的类都可以使用不在乎是否同包。 二.继承 2.1继承的定义 继承是什么是所有OOP语言不可缺少的组成成分是面向对象的三大特征之一继承就相当于孩子继承父亲的东西父亲愿意给孩子的东西关键字是extends继承父类的成员变量和成员方法一般是为了减少代码冗余。但是继承也得遵守访问修饰符一旦不符合则无法继承。
代码显示
public class Animal {public String name;public Animal(String name) {this.name name;}public void eat(String food) {System.out.println(this.name 正在吃 food);
}
}
// Cat.java
class Cat {public String name;public Cat(String name) {this.name name;}public void eat(String food) {System.out.println(this.name 正在吃 food);
}
}
// Bird.java
class Bird {public String name;public Bird(String name) {this.name name;}public void eat(String food) {System.out.println(this.name 正在吃 food);}public void fly() {System.out.println(this.name 正在飞 ︿(︶)︿);}
} 可以看得出来Animal类和cat类还有Bird类有很多重复的代码而为了减少大量的冗余代码我们可以使用继承的手段。
2.2继承的方法 定义方法 class 子类 extends 父类 { } 代码实现
class Animal {public String name;public Animal(String name) {this.name name;
}public void eat(String food) {System.out.println(this.name 正在吃 food);}
}class Cat extends Animal {public Cat(String name) {// 使用 super 调用父类的构造方法.super(name);}
}class Bird extends Animal {public Bird(String name) {super(name);
}public void fly() {System.out.println(this.name 正在飞 ︿(︶)︿);}
}
public class Test {public static void main(String[] args) {Cat cat new Cat(小黑);cat.eat(猫粮);Bird bird new Bird(圆圆);bird.fly();
}
}
我们可以看出Cat类和Bird类的成员变量和成员方法相当于是在Animal类的基础上扩展出来。
2.3继承使用注意点
使用 extends 指定父类.Java 中一个子类只能继承一个父类 (而C/Python等语言支持多继承).子类会继承父类的所有 public 的变量和方法.对于父类的 private 的字段和方法, 子类中是无法访问的.子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用所有的类都有一个父类---Object类三.多态
3,1多态的定义 多态是面向对象三大特征最后一个可以增强程序的扩展性提高程序的可维护性。而它的主要支撑技术有向上转型、向下转型、动态绑定、方法重写。 3.2动态绑定 即方法与方法的主体在运行时才进行绑定。例如当父类和子类拥有一个同名的方法remove那么定义了an.remove()remove方法的调用主体是an但是an只有调用时才能知道是实例化了哪个类。而这便是动态绑定。
3.3方法重写 当子类和父类的成员方法名相同时那么子类的成员方法便是方法重写。而当子类的对象实例化之后使用和父类同名的方法则使用的子类的方法不是使用父类的方法。
class Animal {public String name;public void Name(String name) {System.out.println(Animal的名字是name);
}}class Cat extends Animal {public void Name(String name) {System.out.println(Cat的名字是name);
}
}
public class Test {public static void main(String[] args) {Cat cat new Cat();cat.Name(小黑);
}
} 该代码的结果是Cat的名字是小黑由此可见使用的Cat类的Name方法而不是Animal类的Name方法。
3.4向上向下转型 向上转型和向下转型都是在继承的基础上
class Animal {public String name;public Animal(String name) {this.name name;
}}class Cat extends Animal {public int age;public Cat(String name) {// 使用 super 调用父类的构造方法.super(name);}public void eat(String food) {System.out.println(this.name 正在吃 food);}
}
public class Test {public static void main(String[] args) {Animal cat new Cat(小黑);cat.eat();
}
}
从上面代码中我们可以发现cat是Animal的引用变量而它指向了子类的对象这就是向上转型。
注
cat是Animal类型的引用变量而对于Animal类型的引用变量来说是无法得知age子类成员变量的所以无法使用cat.age22;进行赋值的。由于cat实际上指向Cat的对象所以当调用eat()方法时依然还能显示子类成员方法的信息。
public class Animal {protected String name;public Animal(String name) {this.name name;}public void eat(String food) {System.out.println(我是一只小动物);System.out.println(this.name 正在吃 food);}
}
public class Bird extends Animal {public Bird(String name) {super(name);}public void eat(String food) {System.out.println(我是一只小鸟);System.out.println(this.name 正在吃 food);}public void fly() {System.out.println(this.name 正在飞);}public static void main(String[] args) {Animal animal new Bird(圆圆);//强制转换为Bird类型Bird bird (Bird)animal;bird.fly();}
} 从上面代码中我们可以很明显的发现向下转型需要通过强制类型转换完成。虽然animal是Animal父类的引用变量但是将animal强制转换为Bird类型便为向下转型。但是并不安全因为向下转型可能会不正确例如原本向下转型为Cat类但却转型为了Bird类这便会产生危险性。
解决方法
Animal animal new Cat(小猫);
if (animal instanceof Bird) {
Bird bird (Bird)animal;
bird.fly();
}
instanceof 可以判定一个引用是否是某个类的实例. 如果是, 则返回 true. 这时再进行向下转型就比较安全了。
结论1.向上转型时是父类的引用变量指向了子类的对象当然无法使用子类的新增成员变量和方法但是如果使用父类的成员方法如果子类有该方法的重写则使用重写的方法若无则使用父类方法。 2.向下转型时则需要强制类型转换。 四.抽象
4.1抽象的概述和定义 抽象类关键字为abstract如果所有的子类都要重写父类的某个方法时父类的方法可以为抽象方法直接声明不需要结构体。而含有抽象方法的类则为抽象类 定义方法 public abstract 类名{ String name; public abstract void 方法名(); } 4.2抽象的使用 抽象类存在的最大意义就是为了被继承. 抽象类不能被实例化, 要想使用, 只能创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法。
abstract class Animal {public String name;public Animal(String name) {this.name name;
}public abstract void eat(String food); //抽象方法子类一定要重写
}class Cat extends Animal {public Cat(String name) {// 使用 super 调用父类的构造方法.super(name);//重写父类的抽象方法public abstract void eat(String food){System.out.println(猫吃food);}}
}class Bird extends Animal {public Bird(String name) {super(name);
}//重写父类的抽象方法public abstract void eat(String food){System.out.println(鸟吃food);}
}
public class Test {public static void main(String[] args) {Cat cat new Cat(小黑);cat.eat(猫粮);Bird bird new Bird(圆圆);bird.fly();
}
}
抽象的重点知识
抽象类不能直接实例化。抽象方法不能是 private 的。抽象类中可以包含其他的非抽象方法, 也可以包含字段. 这个非抽象方法和普通方法的规则都是一样的, 可以被重写,也可以被子类直接调用。五.接口
5.1接口的意义 接口是为了弥补代码无法多继承只能单继承的问题。例如定义了一个Animal的父类和Cat、Bird、Dog、Wolf的子类可是你想啊狗和猫是宠物或许有共同的方法定义一个宠物类那么可以通过接口实现不相关类的相同行为。
好处
利于代码的规范目的是给开发人员一个清晰的指示告诉他们哪些业务需要实现同时防止由于开发人员随意命名而导致命名不清晰和代码混乱影响开发效率。 是有利于对代码进行维护定义一个接口把功能菜单放在接口里然后定义类时实现这个接口。是保证代码的安全和严密。
5.2接口的定义 定义方法 public interface 接口名{ } 使用接口 class 类名 implements 接口名{ 方法体 } 代码实现
class Animal {public String name;public Animal(String name) {this.name name;}}//定义接口
public interface Eat {public void eat(String food);
}//使用接口
class Dog extends Animal implements Eat{public int age;public Cat(String name) {// 使用 super 调用父类的构造方法.super(name);}public void eat(String food) {System.out.println(this.name 正在吃 food);}
}//使用接口
class Cat extends Animal implements Eat{public int age;public Cat(String name) {// 使用 super 调用父类的构造方法.super(name);}public void eat(String food) {System.out.println(this.name 正在吃 food);}
}
public class Test {public static void main(String[] args) {Animal cat new Cat(小黑);cat.eat();
}
}
接口的重点
接口的方法体若为空则为空实现。一个类可以有多个接口。接口里所有的方法都是public和抽象的所以可以省略public和抽象的。接口无法被实例化。接口可以被继承总结 继承是多态、抽象的基础而学会了抽象才能理解接口。而这些知识都是Java最为重要的面向对象三大特征的。只有细心学习才能更近一步在Java上才能算正式起步。 文章转载自: http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn http://www.morning.lrflh.cn.gov.cn.lrflh.cn http://www.morning.bdgb.cn.gov.cn.bdgb.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.xkzr.cn.gov.cn.xkzr.cn http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.krwzy.cn.gov.cn.krwzy.cn http://www.morning.mrncd.cn.gov.cn.mrncd.cn http://www.morning.jgttx.cn.gov.cn.jgttx.cn http://www.morning.gmztd.cn.gov.cn.gmztd.cn http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.pmjw.cn.gov.cn.pmjw.cn http://www.morning.fmqng.cn.gov.cn.fmqng.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.hwprz.cn.gov.cn.hwprz.cn http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.xhrws.cn.gov.cn.xhrws.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn http://www.morning.qfgwx.cn.gov.cn.qfgwx.cn http://www.morning.jfcbs.cn.gov.cn.jfcbs.cn http://www.morning.xwlmr.cn.gov.cn.xwlmr.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn http://www.morning.qkqhr.cn.gov.cn.qkqhr.cn http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn http://www.morning.smrkf.cn.gov.cn.smrkf.cn http://www.morning.oumong.com.gov.cn.oumong.com http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn http://www.morning.bprsd.cn.gov.cn.bprsd.cn http://www.morning.pznnt.cn.gov.cn.pznnt.cn http://www.morning.ttshf.cn.gov.cn.ttshf.cn http://www.morning.kltmt.cn.gov.cn.kltmt.cn http://www.morning.rhdln.cn.gov.cn.rhdln.cn http://www.morning.c-ae.cn.gov.cn.c-ae.cn http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.wdlg.cn.gov.cn.wdlg.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.ffksr.cn.gov.cn.ffksr.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.twdkt.cn.gov.cn.twdkt.cn http://www.morning.mtjwp.cn.gov.cn.mtjwp.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.gcfg.cn.gov.cn.gcfg.cn http://www.morning.rysmn.cn.gov.cn.rysmn.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn http://www.morning.rcwzf.cn.gov.cn.rcwzf.cn http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn http://www.morning.chzbq.cn.gov.cn.chzbq.cn http://www.morning.srckl.cn.gov.cn.srckl.cn http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.yhywr.cn.gov.cn.yhywr.cn http://www.morning.weiwt.com.gov.cn.weiwt.com http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.hhrpy.cn.gov.cn.hhrpy.cn http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn http://www.morning.gdljq.cn.gov.cn.gdljq.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.fwnyz.cn.gov.cn.fwnyz.cn http://www.morning.npbkx.cn.gov.cn.npbkx.cn http://www.morning.lizpw.com.gov.cn.lizpw.com