封装

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学习笔记之封装与继承的更多相关文章

  1. Java 学习笔记 ------第六章 继承与多态

    本章学习目标: 了解继承的目的 了解继承与多态的关系 知道如何重新定义方法 认识java.lang.object 简介垃圾回收机制 一.继承 继承是java面向对象编程技术的一块基石,因为它允许创建分 ...

  2. Java学习笔记 07 接口、继承与多态

    一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...

  3. Java学习笔记(九)——继承

    一.继承 1.概念: 继承是类于类之间的关系,是一种"is a "的关系 Ps: Java是单继承 2.优势: (1)子类直接拥有父类的所有属性和方法(除了privata) (2) ...

  4. [core java学习笔记][第五章继承]

    5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...

  5. 1.11(java学习笔记)封装

    封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...

  6. Java学习笔记之——封装

    1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...

  7. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  8. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  9. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

随机推荐

  1. 面试官:服务器安装 JDK 还是 JRE?可以只安装 JRE 吗?

    前些日子有知友面试时被问到如题所示的问题,由于他之前没有准备到这些最最基础的知识,没有考虑过这个问题,所以被问到时竟一脸萌币,回答的不是很好.这道题主要考的是对 Java 基础知识的了解,有些同学可能 ...

  2. Net基础篇_学习笔记_第十天_方法_方法的练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Redis压缩包win10快速启动之记录一

    转载请标明出处: http://dujinyang.blog.csdn.net/ 本文出自:[奥特曼超人的博客] Redis压缩包 配置环境变量,直接CMD中启动,默认是打开redis.conf,当然 ...

  4. 反射的应用、获取Class类实例

    *准备工作: 包结构:* ======================= Person.java代码: package com.atguigu.java; public class Person { ...

  5. Linux之正则表达式grep

    真好!

  6. 从Hybrid到React-Native: JS在移动端的南征北战史

    注:因为不了解Dart,所以本文不对flutter相关内容进行阐述, 实在抱歉 Hybrid Hybird是一种混合开发应用,可以实现JS和Java代码的互通,单纯使用ios/android原生实现, ...

  7. JsonConvert 转DateTime类型为json 带T

    在调用接口的时候  将Model转换成json Datetime类型多了个T 用的是Newtonsoft.Json.dll 版本v4.5.0.0 代码:paramsjson = JsonConvert ...

  8. activity的隐式和显式启动

    显式Intent(Explicit intent):通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent(Implicit i ...

  9. 使用$.getJSON()需要注意的地方

    第一 JSON文件里面不能有任何注释,不能使用单引号,必须使用双引号: 第二 JSON文件名不能使用特殊字符 -  ,比如 test-a.json 否则不会返回任何数据也不会报错. 使用方法: $.g ...

  10. Git初始化项目 和 Gitignore

    初始化init: git init git status git add . git commit -am "init projrct" 添加远程仓库: git remote ad ...