一. 封装的讲解

什么是封装?为什么要封装?怎么实现封装?

封装的目的是为了提高程序的安全性。封装就是把不想让第三者看的属性,方法隐藏起来。

封装的实现方法是: 1.修改属性的可见性,限制访问。

          2.设置属性的读取方法。

          3.在读取属性的方法中,添加堆属性读取的限制。

package com.chen.test;

public class Test9 {
private int age; // 定义年龄
private String name; // 定义姓名
private double price; // 定义价格 //用get/set方法对属性进行封装
public int getAge() {
return age;
} //在传入年龄时,设置了年龄的限制
public void setAge(int age) {
if (age > 100 || age < 0) {
this.age = 18;
}
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
}
}

封装的几个关键字总结:

   private :  只能被类自身调用

  public  :      1. 可以被类自身中的方法调用。 2. 可以在子类中直接调用父类的public属性和方法。3. 可以被对象直接调用。

  protected:   1.可以被类自身的方法调用。    2.可以在子类直接调用父类的protected属性和方法。

  默认关键字: 1. 可以在子类直接调用父类的默认关键字修饰的属性和方法。 2. 可以被本包的对象直接调用。

关键字的比较,从三个角度去对比:子类,包内,包外。

   protected关键字的设计的初衷就是为了子类调用父类的属性和方法设计的。

  默认关键字设计的初衷是为了包内可以调用,包外不可以调用。

二. 继承

 JAVA的继承是 单线继承,不允许多重继承;  

  子类可以继承父类的哪些方法和属性:
      1.父类的private属性和方法,无法继承
      2.父类的protected属性和方法,都可以继承
      3.父类的public属性和方法,都可以继承
      4.父类的默认关键字修饰的属性和方法,如果子类和父类在一个包里,则可以继承

抽象类与抽象方法:
    不能够被实例化的class,用abstract进行修饰,这就是抽象类。
    抽象类中可以写抽象方法、还可以写非抽象方法----------------非抽象类中不能定义抽象方法;
    抽象类中定义的抽象,必须要在子类中被重写------子类必须重写父类的抽象方法(除非子类也是抽象类)
抽象方法的作用?
   子类必须重写父类的抽象方法,可以实现多态;
final关键字的总结:
    1. final修饰变量     -----  给变量一次初始化的机会,以后就不能再修改
            public final double dburl;

final修饰引用型变量 -------------------锁定了引用的地址,不能再发生变化;
           final Dog dog = new Dog("欢欢");
           dog = null;

2. final修饰class   ----- 这个class不能被子类继承
             public final class Dog extends Pet{}

3. final修饰方法  ------ 表示这个方法不能被子类重写
             public final void swim(Pool pool) {}

重写:override
      子类有一个与父类,同名、同参、同返回值的方法,那么就说子类的这个方法重写了父类的同名方法;

重写了什么?
    方法的本质------>>> 是函数指针  
    重写的本质就是:用子类内存区中方法的首地址,替换父类内存区中同名方法的首地址

接口与抽象类的对比
    1. 接口是能力的表示
       抽象类是Class,它有属性和行为

2. 接口里可以定义常量,但是没有属性

3. 接口中的方法,都是public abstract (共有的抽象方法,不能定义其它类型的方法)

4. 抽象类中的方法,可以是抽象的,也可以是非抽象的。但是接口中必须是抽象的;

java中面向对象的一些知识(二)的更多相关文章

  1. java中面向对象的一些知识(一)

    一:基本概念 举例:写一个程序,实现如下功能: 一群宠物,宠物有各种类型,如猫.狗.企鹅等 让这群宠物,按照各自的能力不同,进行各种比赛(如爬树.游泳.跳水):扩展性需求: 游泳比赛游泳池的参数.飞盘 ...

  2. Java中面向对象三大特征

    也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...

  3. java中面向对象的三大特性小结

    java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1 ...

  4. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  5. 关于Java中面向对象章节、IO 流中的重点基础知识。

    一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多 ...

  6. Java中面向对象的理解

    按照惯例,先做一个简单的介绍,现在开始学习 Thinging in Java 4 ,一边看,一边记录,我都不想给自己设定时间安排了,毕竟很少实现过.所以就这样吧!不定期的更新,我都会放到博客中的. 所 ...

  7. JAVA中面向对象

    一.方法: 1.方法概述: 在JAVA中,方法就是用来完成解决某件事情或实现某个功能的办法. 2.方法的语法格式: 修饰符  返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,.....){ ...

  8. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  9. Java内存管理-探索Java中字符串String(十二)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends O ...

随机推荐

  1. C语言学习 第九次作业总结

    本次作业练习的内容是二维数组.下面我先简单的说下二维数组的基本知识点: 二维数组其实这个中文概念颇有误导--会让人感觉这是一个两个维度的概念.所以很多的国外的C语言书籍上会称这种数组为多下标数组:即首 ...

  2. 【java基础系列】一、常用命令行

    常用的DOS命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd\:退回到根目录 del:删除文件 exit:退出dos ...

  3. jquery基本操作笔记

    来源于:http://www.cnblogs.com/webcome/p/5484005.html jq和js 可以共存,不能混用: 1 2 3 4 5 6 $('.box').css('backgr ...

  4. 使用AccessibilityService执行开机自启动

    res/xml/accessibility_service_config.xml <accessibility-service xmlns:android="http://schema ...

  5. Jmeter学习笔记TWO

    使用非GUI模式运行Jmeter脚本并自动生成测试报告 命令:jmeter -n -t tougu.jmx -l result.jtl -e -o /tmp/ResultReport 这个命令是用于执 ...

  6. 一次基于etcd的分布式锁自动延时失败问题的排查

    今天在测试基于etcd的分布式锁过程中,在测试获取锁后,释放之前超出TTL时长的情况下自动延长TTL这部分功能,在延长指定key的TTL时总是返回404错误信息,在对目标KEY更新TTL时目标KEY已 ...

  7. Git 耍不起来啊

    1.  $ git clone https://******.git Cloning into 'dt-engine-server'...fatal: unable to access 'https: ...

  8. Scrum Meeting 20161209

    本周Sprint Master 史少帅 会议概要 工作总结: · 陈双, 王永超: 打分功能合并到主分支并且测试成功 · 鲍航波 录音上传.下载接口封装完成,可供调用 · 侯宇泰, 史少帅: 修复录音 ...

  9. 【实践】Memcached实例解析

    一.关于Memcached Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是一种基于内存的Key-Value存储,用来存储小块的任意数据(字符串.对象).这些 ...

  10. PHP 自动加载规范PSR-4

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...