前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础-面向对象(三)

Java基础-面向对象(三)

作者头像
cwl_java
发布2019-11-12 12:56:33
4970
发布2019-11-12 12:56:33
举报
文章被收录于专栏:cwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102949316

面向对象的三大特征
  • 继承 inheritance
    • 子类 父类
    • 子类可以从父类继承属性和方法
    • 子类可以提供自己单独的属性和方法
  • 封装/隐藏encapsulation
    • 对外隐藏某些属性和方法
    • 对外公开某些属性和方法
  • 多态 polymorphism
    • 为了适应需求的多种变化,使代码变得更加通用!
    • 面向过程只有封装性(功能的封装,而没有数据的封装),没有继承和多态
封装(encapsulation)
  • 为什么需要封装?封装的作用和含义?
    • 我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰 碰显像管吗?
    • 我要开车,….
  • 隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩 展性、可维护性。
  • 我们程序设计要追求“高内聚,低耦合”。
    • 高内聚 :就是类的内部数据操作细节自己完成,不允许外部干涉;
    • 低耦合 :仅暴露少量的方法给外部使用。

使用访问控制符,实现封装

成员(成员变量或成员方法)访问权限共有四种:
  • public 公共的
    • 可以被项目中所有的类访问。(项目可见性)
  • protected 受保护的
    • 可以被这个类本身访问;同一个包中的所有其他的类访问;被它的子类(同一个包以及不同包中的子类)访问
  • default/friendly 默认的/友好的(包可见性)
    • 被这个类本身访问;被同一个包中的类访问。
  • private 私有的
    • 只能被这个类本身访问。(类可见性)
类的访问权限只有两种
  • public 公共的
    • 可被同一项目中所有的类访问。 (必须与文件名同名)
    • default/friendly 默认的/友好的
    • 可被同一个包中的类访问。
    在这里插入图片描述
    在这里插入图片描述
封装要点
  • 类的属性的处理:
    • 一般使用private. (除非本属性确定会让子类继承)
    • 提供相应的get/set方法来访问相关属性. 这些方法通常是public,从而提供对属性的读取操作。

(注意:boolean变量的get方法是用:is开头!)

  • 一些只用于本类的辅助性方法可以用private,
  • 希望其他类调用的方法用public
继承
  • 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。
  • 提高代码的复用性!
  • extands的意思是“扩展”。子类是父类的扩展
  • 不同的叫法:超类、父类、基类、子类、派生类
在这里插入图片描述
在这里插入图片描述
方法的重写(override)
  • 在子类中可以根据需要对从基类中继承来的方法进行重写。
  • 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
  • 重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
Object类
  • Object类是所有Java类的根基类
  • 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
  • 重写:toString方法:
    • 默认返回:包名+类名+@+哈希码
    • 可以重写!

代码示例

代码语言:javascript
复制
package com.cwl.base.day03.oop;

/**
 * @program: java_base
 * @description:
 * @author: ChenWenLong
 * @create: 2019-11-07 10:43
 **/
public class TestObject {

    public static void main(String[] args) {
//		Object obj;

        TestObject   to = new TestObject();
        System.out.println(to.toString());

        Person2  p2 = new Person2("String", 6);
        System.out.println(p2.toString());

    }

    public String toString(){
        return  "String";
    }
}

class Person2 {
    String name;
    int age;

    @Override
    public String toString() {
        return name+",String"+age;
    }

    public Person2(String  name, int age) {
        this.name = name;
        this.age = age;
    }


}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向对象的三大特征
  • 封装(encapsulation)
  • 使用访问控制符,实现封装
    • 成员(成员变量或成员方法)访问权限共有四种:
      • 类的访问权限只有两种
        • 封装要点
          • 继承
            • 方法的重写(override)
              • Object类
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档