Java中的三大特性:封装、继承、多态
封装:
概念:封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
原则:将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。主要运用就是JavaBean
代码:创建JavaBean
1 //创建一个Person类
2 public class Person {
3 private String name; //private私有方法修饰变量,把变量封装起来
4 private int age;
5 //无参构造方法
6 public Person() {
7 }
8 //有参构造方法
9 public Person(String name, int age) {
10 this.name = name;
11 this.age = age;
12 }
13 //set、get方法
14 public String getName() {
15 return name;
16 }
17
18 public void setName(String name) {
19 this.name = name;
20 }
21
22 public int getAge() {
23 return age;
24 }
25
26 public void setAge(int age) {
27 this.age = age;
28 }
29 //重写toString方法:便于输出格式好看点
30 @Override
31 public String toString() {
32 return "Person{" +
33 "name='" + name + '\'' +
34 ", age=" + age +
35 '}';
36 }
37 }
赋值就通过构造方法就可以了
| 修饰符/类 | 本类 | 同一个包中的类 | 子类 | 其他类 |
| public | 可以 |
可以 | 可以 | 可以 |
| protect | 可以 | 可以 | 可以 | 不可以 |
| 无访问修饰符 | 可以 | 可以 | 不可以 | 不可以 |
| private | 可以 | 不可以 | 不可以 | 不可以 |
继承:
概念:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
好处:提高代码的复用性。类与类之间产生了关系,是多态的前提。
代码:
1 //定义父类
2 public class Fu {
3 int age =1;
4 public void show(){
5 System.out.println("父类的方法");
6 }
7 public Fu() {
8 System.out.println("父类无参构造");
9 }
10 public Fu(String name){
11 System.out.println(name);//父类有参构造要在子类构造方法中通过super关键字赋值
12 }
13 }
14
15 //定义子类继承父类
16 public class Zi extends Fu {
17 int age =2;//定义和父类相同的成员变量
18 public Zi() {
19 super("给父类有参构造赋值成功");//通过super关键字给父类有参构造赋值
20 }
21 public void show(){//成员方法重名:重写
22 // super.show();//super关键字调用父类同名方法
23 System.out.println("子类的方法");
24 }
25 public void show1(){
26 System.out.println(this.age);//this关键字调用本类的成员方法
27 System.out.println(super.age);//super关键字调用父类的成员方法
28 }
29 }
30
31 //测试类
32 //父类构造方法有参数必须要子类的构造方法通过super关键字赋值,不然要报错
33 public class ExtendsTest {
34 public static void main(String[] args) {
35 Zi zi = new Zi();
36 zi.show();
37 zi.show1();
38 }
39 }
输出结果:

多态:
概念:多态是指同一行为,具有多个不同表现形式。
前提:
1. 继承或者实现【二选一】
2. 方法的重写【意义体现:不重写,无意义】
3. 父类引用指向子类对象【格式体现】
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法。
代码:
1 //父类
2 public abstract class Animal {
3 public abstract void eat();
4 }
5
6 //子类Dog继承
7 public class Dog extends Animal {
8 @Override
9 public void eat() {//重写父类的方法
10 System.out.println("狗吃东西");
11 }
12 }
13
14 //子类Cat继承
15 public class Cat extends Animal {
16 @Override
17 public void eat() {//子类重写
18 System.out.println("猫吃东西");
19 }
20 public void run(){//子类自己定义的方法
21 System.out.println("猫跑开了");
22 }
23 }
24
25
26 //测试类
27 public class Test {
28 public static void main(String[] args) {
29 Cat cat = new Cat();
30 Dog dog = new Dog();
31 // 多态规定,执行的是子类重写的方法,无论之后再多的子类出现,我们都不需要编写showXxxEat方法了,直接使用 showAnimalEat都可以完成。
32 showAnimaleat(cat);
33 showAnimaleat(dog);
34
35 /*// 向上转型
36 Animal c =new Cat();
37 // 向下转型
38 Cat cat = (Cat) c;
39 cat.run();*/
40 // instanceof关键字运用
41 Animal an =new Cat();
42 if (an instanceof Cat){
43 Cat cat1 = (Cat) an;
44 cat1.eat();
45 }else {
46 Dog dog1 = (Dog) an;
47 dog1.eat();
48 }
49 }
50 public static void showCateat(Cat cat){
51 cat.eat();
52 cat.run();
53 }
54 public static void showDogeat(Dog dog){
55 dog.eat();
56 }
57 public static void showAnimaleat(Animal animal){
58 animal.eat();
59 }
60 }
面向对象编程的这三大特性,自己肯定总结的不够全面,主要能给我一点印象,如果有错的地方欢迎大家来纠错
Java中的三大特性:封装、继承、多态的更多相关文章
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- C++三大特性 封装 继承 多态
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- Java中面向对象三大特性之继承
1. 继承的概述 继承就是子类继承父类的变量和方法,下面用代码解释一下: class Student {// 定义学生类 String name; int age; void study() { Sy ...
- Java中面向对象三大特性之——继承
继承的概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 现实生活中继承:子承父业,用来描述事物之间的关系 代码中继承:就是用 ...
- Java中的三大特性 - 超详细篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的三大特性 - 超详细篇>,希望对大家有帮助,谢谢 这一节的内容可能有点多,大家可以选择性的来看 简介 Java的三大特性:封装.继 ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- JAVA的三大特征 封装继承多态- 简单总结
简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...
随机推荐
- CVPR2021 | 重新思考BatchNorm中的Batch
前言 公众号在前面发过三篇分别对BatchNorm解读.分析和总结的文章(文章链接在文末),阅读过这三篇文章的读者对BatchNorm和归一化方法应该已经有了较深的认识和理解.在本文将介绍一篇关于 ...
- 题解 v
传送门 考场上只会爆搜--觉得重复状态其实有很多但不知道怎么记忆化,结果-- 对于类似这样n不算太小但只有二三十,而重复状态极多的题其实也是可以跑状压/记搜的,状态可以开map存 然后就是爆搜,就没什 ...
- 经典树与图论(最小生成树、哈夫曼树、最短路径问题---Dijkstra算法)
参考网址: https://www.jianshu.com/p/cb5af6b5096d 算法导论--最小生成树 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树. im ...
- mycat 分片的策略
目的:有 user 和 t_order 两张数据表,表 user 的数据全部存放在 db1_zhang 中,表 t_order 的数据按 id 对 2 取模分别存放在 db1_zhang 和 db2_ ...
- 【springcloud】Zuul 超时、重试、并发参数设置
转自:https://blog.csdn.net/xx326664162/article/details/83625104 一. Zuul 服务网关 服务网关 = 路由转发 + 过滤器 1.路由转发: ...
- 【转】TCP和UDP的区别
转自:https://www.cnblogs.com/steven520213/p/8005258.html TCP和UDP是OSI模型中的运输层中的协议.TCP提供可靠的通信传输,而UDP则常被用于 ...
- new[]/delete[]与new/delete区别
new[]/delete[]与new/delete完全不同-动态对象数组创建通过new[] 完成-动态对象数组的销毁通过delete[]完成-new[]/delete[]能够被重载,进而改变内存管理方 ...
- pyspark启动与简单使用----本地模式(local)----shell
在Spark中采用本地模式启动pyspark的命令主要包含以下参数:–master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是使用本地模式启动pyspark ...
- Android:绘制字符
根据FontMetrics的特点,将字符在矩形框中居中显示:
- 并发编程之:JMM
并发编程之:JMM 大家好,我是小黑,一个在互联网苟且偷生的农民工. 上一期给大家分享了关于Java中线程相关的一些基础知识.在关于线程终止的例子中,第一个方法讲到要想终止一个线程,可以使用标志位的方 ...