封装、继承、多态、访问符,范围修饰符
访问符,范围修饰符:
public (公开)
protected (保护)
无
private (私有)
修饰符 | 本类中 | 同包类 | 同子类 | 外包类 | 外包子类 |
public(公开的) | √ | √ | √ | √ | √ |
protected (保护) | √ | √ | √ | X | √ |
无 | √ | √ | √ | X | X |
private (私有) | √ | X | X | X | X |
封装:
在平常的对象的变量有几个问题:
1.可以直接对属性赋值,只要不违反属性类型的大小即可
2.可以直接访问属性
3.赋值后,没有任何代码执行
封装就可以很好的解决:
面向用户更简单,面向属性更安全
1.将属性私有化
2.你可以提供两个方法 一个set 设置 一个 get 得到的意思
封装方法介绍:
set方法:
1.可以设置属性值
2.验证数据的合法性
3.执行业务逻辑
public class Dog {private int age;//首先属性要私有化public void setAge(int age) {if (age > 0) {//在封装的数据中可以加入判断this.age=age;} else {System.out.println("请输入您正确的年龄");}}
}
get方法:
1.可以得到属性值
2.数据的加工
public class Dog {public static void main(String[] args) {Dog dog = new Dog();dog.setAge(12);int a = dog.getAge();System.out.println(a);}private int age;//首先属性要私有化public void setAge(int age) {if (age > 0) {//在封装的数据中可以加入判断this.age = age;} else {System.out.println("请输入您正确的年龄");}}public int getAge() {return (this.age / 2);//通过get方法取值,也可以数据加工}
}
继承:extends(继承关键字)
代码高效率复用?
继承等于拥有,子类继承父类 拥有父类的一切
继承就是在父类的基础上扩展和升级
从代码角度理解继承,其实他只是一个代码的复用.
继承的好处:
除了私有成员不可访问,其他的都可以访问
拥有父类对象
父类的方法也一并在子类显示
public class Dog1 extends Dog {public static void main(String[] args) {Dog1 dog1 = new Dog1();//子类拥有父类的一切dog1.x();dog1.y();}public void z() {System.out.println("啦啦");}
}
———————————————————————————
public class Dog2 extends Dog1 {public static void main(String[] args) {Dog2 dog2 = new Dog2();dog2.x();dog2.y();dog2.z();}public void q() {System.out.println("嘿嘿");//可以在前面的父类的基础上进行升级}
}
创建子类对象,先出父类对象后出子类对象
因为先把父类内存创建 然后 将子类内存覆盖
调用子类时是拥有父类内存的
规则(永远不会改变):
创建子类对象,先出父类后出子类
使用子类对象调用方法,先问子类有没有,如果没就调用父类
java中只能单一继承
extends 后面只能写一个类
方法重写(覆盖父类的方法):
就是子类觉得父类的方法不好用,或者有问题,就在子类申请了一个方法进行覆盖,这就叫重写
与父类的方法声明一模一样
你如果怕写错,你可以写一个注解在方法上 @Override这样就不会出错了
public class Dog {public void x() {System.out.println("嘻嘻哈哈");}public void y() {System.out.println("啦啦啦");}
}
____________________________________________________
public class Dog1 extends Dog {public static void main(String[] args) {Dog1 dog1 = new Dog1();//子类拥有父类的一切dog1.x();dog1.y();}@Overridepublic void x(){System.out.println("嘿嘿");}public void z() {System.out.println("啦啦");}
}
super:
代表父类对象(用super代表调用父类的,方法,变量等)
用法:
1.父类对象
2.选择父类构造器
final:
修饰在类上 不能继承
修饰在方法上 方法不可重写
修饰在属性上 属性是常量 是常量就把它写成 static final 就行了
final public class T1 {//此类不可继承static final int a=1;//此只不会变final public void a() {}//此方法不可重写
}
多态 (设计者身份):
以父类做模板,子类做实现(面向父类编程)。
子类对象可以转换成父类类型
父类 a=new 子类()
面向父类编程:父类声明相应的方法,让子类去重写
硬代码:软编码可以在运行时确定,修改
软代码:而硬编码是不能够改变的。
父类转换成子类,切记一定里面是子类才行
父类转子类要强制转换
子类转父类自动转换
public class T1 {//此类不可继承public void chi() {}public void he() {}
}
------------------------------------------------------------------------------------------------------
public class T2 extends T1 {public static void main(String[] args) {T1 t1 = new T2();t1.chi();//子类转换父类是直接转换的T2 t2= (T2) new T1();//子类转换父类需要强制转换}@Overridepublic void chi() {System.out.println("哈哈");}@Overridepublic void he() {System.out.println("呼呼");}
}
封装、继承、多态、访问符,范围修饰符相关推荐
- 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符
11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...
- 05【继承、抽象、权限修饰符、final】
文章目录 05[继承.抽象.权限修饰符.final] 一.继承 1.1 继承概述 1.2 继承的格式 1.3 继承案例 1.3.1 需求 1.3.2 分析 1.3.3 代码实现 1.4 父类不可被继承 ...
- 11.0_[Java 继承]-继承/重写/抽象类/抽象方法/ final 修饰符
################################################## 目录 继承 什么是继承 继承语法 super 关键字 如何使用继承 java.lang.Objec ...
- python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态
六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...
- 小白理解——封装继承多态
一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...
- php的封装继承多态,PHP封装、继承和多态
众所周知,面向对象的编程语言有三大特性,分别是:封装.继承和多态. 面向对象的封装特性就是将类中的成员属性和方法内容细节尽可能地隐藏起来,确保类外部代码不能随意访问类中的内容. 面向对象的继承特性使得 ...
- Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态
Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...
- python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...
- 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)
面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...
- c语言编程 菲薄拉,C语言设计模式-封装-继承-多态
快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...
最新文章
- 石川es6课程---3、变量let和常量const
- linux ora01075,操作系统时间被修改导致ORA-01075和ORA-00600[2252]
- 内嵌WEB服务器加载原理
- Luogu P2982 [USACO10FEB]慢下来 Slowing down | dfs序、线段树
- FreeMarker标签与使用
- 语句的输入和输出 数据类型 运算符
- 每年通过率仅1%的“天才考试”,中国到底应不应该学?
- JAVA中修改顺序表中的元素_java – 在列表中查找元素并使用stream()更改它
- python回归分析实验_python线性回归实验
- 如何处理分析Flink作业反压的问题?
- centos7安装(二进制包)mysql8
- 原生安卓10怎么打开面部识别_安卓手机运行慢怎么办?只需简单一步立即提速翻倍...
- 微信小程序之海报生成
- lvds、cml、lvpecl接口电平详解
- html梯形选项卡,css 梯形tab标签页
- 使用Echarts.js自定义X轴Y轴刻度画网格
- Chart用法详细说明
- 独立站SEO到底怎么做?
- java图像处理:灰度化,二值化,降噪,切割,裁剪,识别,找相似等
- 互联网思维方式(一)