JAVA Class6
学习内容:
1.封装:
隐藏对象的属性和实现细节,仅对外公开接口(一般通过定义set get 方法来访问内部属性),常见的将方法封装在类中就是封装的一种体现。
2.private修饰词
private修饰词,私有化,被修饰的变量、方法只能在当前类内访问,无法被继承,方法只能在该类内使用,如果其他类要访问这些变量,就要在
当前类内提供访问的方法,这种做法也是封装的一种体现。
public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }
3.this关键字
this关键字可以粗略的理解为当前的意思:
public void setName(String name) {this.name = name;} 该方法需要一个实例化的Student对象来调用,this指的就是当前的调用对象,可以理解为 调用对象.name = 形参的name
局部变量与成员变量重名问题:
public void speak() {//int age = 20;//String name = "张三";System.out.println(this.name+this.age+this.sex);//局部变量与对象成员变量重名时://如果没有如上两个局部变量,则可以不加this,调用对象的对应的成员变量;//如果有局部变量,而不加this,会就近调用局部变量,如果加了this,则访问调用对象的对应成员变量 }
4.继承
指的是在一个现有的类的基础上再创建一个子类,子类继承父类的所有属性与方法,同时子类可以拥有自己独有的属性和方法
class Father{String lastname;double race;public void walk(){System.out.print("行走");} }class Son extends Father{String firstname;public void run(){System.out.print("奔跑");} }
多重继承:
一个子类只能直接拥有一个父类,但可以间接拥有另外一个父类
public class Animals { //父类 String race;public void see() {System.out.println("看见");} }public class Dog extends Animals{ //父类,同时也是Animals的子类 String color;int yp;String sex; }public class Hdog extends Dog{ //子类 是Dog的子类,同时也是Animals的子类 String per; }
继承问题:
父类中被private修饰的成员变量、方法无法被子类继承!
访问权限:子类重写的父类方法的访问权限只能是大于等于父类方法,例如父类中有一个方法是public,子类只能是public,修改为protected会报错,如果该方法是protected,子类重写时可以是protected也可以是public
5.super关键字
类似于this,super可以被粗略的被认为是当前的父级
public class Dog extends Animals{ String color;int yp;String sex; } public class Hdog extends Dog{ String per;public void test() {System.out.println(this.color); //调用当前类成员变量System.out.println(super.color);//super 调用父类成员变量; } }
构造方法中:
public class Dog extends Animals{ //父类 String color;int yp;String sex;public Dog(String color,int yp,String sex) {this.color = color;this.yp = yp;this.sex = sex; } } public Hdog(String color,int yp,String sex,String per) {super(color,yp,sex);//方法重载,调用父类构造方法this.per =per; }注意,由于此处的父类没有默认的无参构造方法,而子类会默认调用父类的无参构造方法,所以子类必须重写一个有参构造方法!
另外,只要子类被实例化,会默认先调用父类构造方法,在调用自身构造方法!
6.方法重写
子类会继承父类的方法,如果子类向利用该方法来提供不同的效果,就要重写该方法。
public class Dog extends Animals{ String color;int yp;String sex;public Dog(String color,int yp,String sex) {this.color = color;this.yp = yp;this.sex = sex;}public void sleep() {System.out.println("睡觉");}public static void spark() {System.out.println("狗叫");} } public class Hdog extends Dog{ String per;public Hdog(String color,int yp,String sex,String per) {super(color,yp,sex);this.per =per;}public void sleep() {System.out.println("躺着睡觉");//重写 }public static void spark() {System.out.println("二哈叫");//隐藏,重写父类类方法 } }方法调用时,当Dog的对象调用sleep方法时,输出睡觉,而Hdog的对象调用sleep时输出躺着睡觉,同理,类方法的隐藏也是如此注意,子类“重写”父类类方法表面看起来是在重写,实际上是重新定义了一个方法名与父类方法名相同的类方法,只不过用各自的类、对象去调用类方法时会调用各自的类方法,可以理解为子类屏蔽了继承自父类的类方法。注意,子类继承的方法在重写时,其修饰词权限要大于等于父类方法修饰词作用域大小:public protected default(默认值,不写!) private
转载于:https://www.cnblogs.com/whwjava/p/8656444.html
JAVA Class6相关推荐
- Java构造器、静态对象、非静态对象等的初始化顺序
Java创建类对象时对于构造器,静态对象.非静态对象的初始化有一定的顺序,我简单归纳一下: class classes {public classes(String n) {System.out.pr ...
- 2015.8.3 Java
今天继续学习Java 用的是eclipse IDE 这个ide怪怪的,但是有一个很方便的功能 就是通过右键选择source 可以点击Generate Getters and Setters生成属性的 ...
- 【笔记】深入理解 Java 虚拟机:晚期(运行期)优化
文章目录 概述 Hotspot 虚拟机内的即时编译器 解释器与编译器 编译对象与触发条件 方法调用计数器 回边计数器 编译过程 Client Compiler Server Compiler 编译优化 ...
- Java自带 JVM监控工具
Jdk自带工具之监控工具 Jdk工具所在默认路径 常用工具 jps jps -l 输出完整的包名称 jps -m 输出所有预加载包和启动类名 jps -v 输出启动类名和 JVM参数 jstack 输 ...
- java模拟真正学生管理系统
这是我第一次,搞这种近乎于现实的学生管理系统,基本功能都实现了,做了我六个小时,昨天下午六点,跟着EDG敲了一路代码,EDG打比赛,我打代码,太燃了,EDG夺冠,EDG牛逼!!!! 全校都在高呼EDG ...
- 在Java层面(window和Linux系统)下的常用性能监控与调优工具的命令及操作
前言 总结,学习,发现问题,再总结,避免以后,在需要的时候抓狂! jvm中的gc的参数解释 年轻代survivor(幸存区) S0C 年轻代中第一个survivor(幸存区)的容量(kb) S1C 年 ...
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...
最新文章
- centOs7上用yum安装软件报错
- python【力扣LeetCode算法题库】945- 使数组唯一的最小增量
- 【面试题】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
- push方法java_万字长文深入浅出谈Java数据类型系列之Stack
- emd实现信息隐藏_【读书笔记】深入理解TensorFlow架构设计与实现原理(五)
- 算法学习笔记:对指定金额计算最少钞票数
- 接口测试质量评估标准
- 烹佛烹祖大炉鞴,锻凡锻圣恶钳锤
- `ifdef、`else、`endif 用法
- python mssql get image bin_python 使用pymssql连接sql server数据库
- 象棋名手3.26版本32位六核完美破解版,含第四代无敌开局库。
- 前端使用goeasy
- Echarts 图表放大功能
- 《软件工程与实践》 |(一)软件工程基础概述 知识梳理
- 大数据分析与应用技术创新平台
- 解决uniapp从首页列表进入详情页,再返回首页时滚动条在顶部的问题
- 80后的我们为什么不结婚
- lnmp安装tpshop
- linux命令指南之三
- Error : connect Time out