Java学习笔记之封装与继承
封装
1,将属性定义为私有的(private) 不能通过 对象名.属性 来直接访问,但是可以通过方法来间接的访问,
2,封装的意义:公有属性可以被随意修改,并且不能被程序察觉。封装后,别人通过方法来访问属性时,我们可以添加限制,访问可以被程序察觉。
下面我们用封装定义一个手机类(这种类一般我们称为 javabean)
public class Phone {
private String type;
private int price;
private String color;
public String getType(){
return type;
}
public void setType(String type){
this.type=type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
注意
1,类中属性和方法的定义顺序没有先后之分
2,当参数与属性重名时,计算机会优先考虑参数(这本身是错误的,不要这样做)
继承
继承:子类继承父类的几乎所有内容(属性跟方法) 关键字 extends
1,那么什么不能被继承呢? private(私有属性)和构造方法不能被继承
2,所有类都是object的子类
3,在java中只能单继承
重写:当子类继承过来的方法不满意,重新覆盖这个方法。
1,当重写了父类的方法,调用的是子类重写过的方法,不会调用父类的那个方法。
public class Person {
public void eat(){
System.out.println("我是父类的方法吃...");
}
}
public class Student extends Person {
//重写 方法名与父类相同 会覆盖父类的方法
@Override
public void eat() {
System.out.println("我是子类中重写的父类方法吃...");
}
}
public class Text {
//我是测试类
public static void main(String[] args) {
Student s=new Student();
s.eat();
}
}
//控制台输出结果为:
//我是子类中重写的父类方法吃...
2,super 可以在子类中调用父类的方法
public class Student extends Person {
//重写 方法名与父类相同 会覆盖父类的方法
@Override
public void eat() {
//调用父类中的eat()
super.eat()
System.out.println("我是子类中重写的父类方法吃...");
}
}
//若再进行测试,控制台输出结果为:
//我是父类的方法吃...
//我是子类中重写的父类方法吃...
重载:方法名与父类相同,参数列表不同 ,是根据参数列表来匹配执行哪个方法
public class Student extends Person {
//重载 方法名与父类相同,参数列表不同
public void eat(String s) {
System.out.println("我是子类中重载的父类方法吃...");
}
}
public class Text {
//我是测试类
public static void main(String[] args) {
Student s=new Student();
//参数对应就会调用相应的方法
s.eat("sss");
}
}
//结果为:我是子类中重载的父类方法吃...
要点:当创建子类对象的时候,会先初始化父类的对象。如果没有显示调用父类的构造方法,默认调用父类的无参的构造方法。
构造方法重载
public Student(String sex){
System.out.println("------>sex");
//如果没有显示调用父类的构造方法,默认调用父类的无参的构造方法。
this.sex = sex ;
}
public Student(String sex,int age){
this(sex); // this() 表示的是本类其他的构造方法,根据参数寻找是哪个构造方法。当表示其他构造方法的时候必须必须放在第一行。
this.age = age ;
System.out.println("------>sex age ");
}
public Student(){
super("sssss");// 显示调用父类的构造方法,不需要方法名。当super父类构造方法的时候,必须放在第一行。
System.out.println("-----Student的构造方法------");
}
Java学习笔记之封装与继承的更多相关文章
- Java 学习笔记 ------第六章 继承与多态
本章学习目标: 了解继承的目的 了解继承与多态的关系 知道如何重新定义方法 认识java.lang.object 简介垃圾回收机制 一.继承 继承是java面向对象编程技术的一块基石,因为它允许创建分 ...
- Java学习笔记 07 接口、继承与多态
一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...
- Java学习笔记(九)——继承
一.继承 1.概念: 继承是类于类之间的关系,是一种"is a "的关系 Ps: Java是单继承 2.优势: (1)子类直接拥有父类的所有属性和方法(除了privata) (2) ...
- [core java学习笔记][第五章继承]
5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...
- 1.11(java学习笔记)封装
封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...
- Java学习笔记之——封装
1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
随机推荐
- 面试官:服务器安装 JDK 还是 JRE?可以只安装 JRE 吗?
前些日子有知友面试时被问到如题所示的问题,由于他之前没有准备到这些最最基础的知识,没有考虑过这个问题,所以被问到时竟一脸萌币,回答的不是很好.这道题主要考的是对 Java 基础知识的了解,有些同学可能 ...
- Net基础篇_学习笔记_第十天_方法_方法的练习
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Redis压缩包win10快速启动之记录一
转载请标明出处: http://dujinyang.blog.csdn.net/ 本文出自:[奥特曼超人的博客] Redis压缩包 配置环境变量,直接CMD中启动,默认是打开redis.conf,当然 ...
- 反射的应用、获取Class类实例
*准备工作: 包结构:* ======================= Person.java代码: package com.atguigu.java; public class Person { ...
- Linux之正则表达式grep
真好!
- 从Hybrid到React-Native: JS在移动端的南征北战史
注:因为不了解Dart,所以本文不对flutter相关内容进行阐述, 实在抱歉 Hybrid Hybird是一种混合开发应用,可以实现JS和Java代码的互通,单纯使用ios/android原生实现, ...
- JsonConvert 转DateTime类型为json 带T
在调用接口的时候 将Model转换成json Datetime类型多了个T 用的是Newtonsoft.Json.dll 版本v4.5.0.0 代码:paramsjson = JsonConvert ...
- activity的隐式和显式启动
显式Intent(Explicit intent):通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent(Implicit i ...
- 使用$.getJSON()需要注意的地方
第一 JSON文件里面不能有任何注释,不能使用单引号,必须使用双引号: 第二 JSON文件名不能使用特殊字符 - ,比如 test-a.json 否则不会返回任何数据也不会报错. 使用方法: $.g ...
- Git初始化项目 和 Gitignore
初始化init: git init git status git add . git commit -am "init projrct" 添加远程仓库: git remote ad ...