• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

飞翔的蛇皮

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

面向对象

面向对象(Object-Oriented Programming,OOP)

本质:以类的方式组织代码,以对象的组织封装数据

三大特性:封装、继承、多态

静态方法不需要实例化,非静态方法不需要实例化。

类和对象的关系

  • 类是一种抽象的数据类型,它是对某一类食物整体的描述和定义,并不能代替某一个实物

  • 对象是抽象概念的具体实例

创建与初始化方法

  • 使用new关键字创建对象

  • 类中的 构造器也称为构造方法,是在进行创建对象的时候必须要调用的,而且构造器有以下两个特点:1、必须和类的名字相同。2、必须没有返回类型,也不能写void

alt+insert快捷键一键生成构造器

package oop.demo_02;
​
import java.util.SplittableRandom;
​
public class Person {
   String name;
   //一个类即使什么都不写,它也会存在一个构造方法
   public Person(){//构造方法
       //实例化初始值
       //1、使用new关键字,本质上是在调用构造器
       //2、初始化对象的值
//       this.name = "请讲";
​
​
  }
   public Person(String name){
       //有参构造:一但有了有参构造,无参就必须显示定义
       this.name = name;
  }
}

 

 

封装

数据的隐藏:通常,应禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问,这称为信息隐藏

 

属性私有:,get/set

package oop.demo_04;
​
public class Student {
   private String name;
   private int age;
   private  int Id;
​
   public void setAge(int age) {
       if (age > 120||age<0) {
           this.age = age;
      }else {
           System.out.println("你输入的是个啥?");
      }
​
  }
​
   public int getAge() {
       return age;
  }
​
   public void setId(int id) {
       Id = id;
  }
​
   public int getId() {
       return Id;
  }
​
   public String getName() {
       return name;
  }
​
   public void setName(String name) {
       this.name = name;
  }//alt+insert快捷键可以快速封装
   
}
package oop.demo_04;
​
public class Application {
   public static void main(String[] args) {
       Student gua = new Student();
       gua.setAge(5);
       gua.setName("乐平");
       System.out.println(gua.getAge());
       System.out.println(gua.getName());
  }
}

 

继承

  • 继承的本质是对某一批类的抽象

  • extends的意思是扩展,子类是父类的扩展

  • JAVA中类只有单继承,但是没有多继承

  • 继承是类和类之间的一种关系,此外类和类之间的关系还有依赖、组合、聚合等

  • 继承关系的里两个类,一个是子类(派生类)、一个是父类(基类)

  • 在java张,所有的类,都默认直接或者简介继承Object

  • super

  • 方法重写

多态

  • 多态是方法的多态,没有属性的多态

  • 父类和子类,有练习,类型转换异常!ClassCastException!

  • 存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1 = new Son();

    1、static 方法,属于类,不属于实例,不能重写

    2、final 常量不能重写

    3、private 方法不能重写

instanceof(类型转换),引用类型,判断一个对象是什么类型

1、父类引用指向子类的对象

2、把子类转换为父类,向上转型

3、把父类转换为子类,向下转型;强制转换

4、方便方法的调用,减少重复的代码!简洁

System.out.println(X instanceof Y);

父与子可以转,其他不能转

 

静态的变量--多线程

抽象类

package oop.demo_09;
//抽象类所有的方法,继承了它的子类,都必须要实现它的方法
//abstract 抽象类:类   extends:单继承~(接口可以多继承)
public abstract class Action {
   //约束~有人帮我们实现
   //抽象方法,只有方法名字,没有方法的实现
   public abstract void doSomething();
   //1.不能new这个抽象类,只能靠子类去实现他:约束
   //2、抽象类中可以写普通的方法
   //3、抽象方法必须在抽象类中
   //抽象的抽象:约束
}

抽象类存在构造器吗?

存在 的意义是什么--抽象出来一些方法,提高开发效率

 

接口

  • 普通类:只有具体实现

  • 抽象类:具体实现和规范(抽象方法)都有

  • 接口:只有规范,自己无法写方法

  • 接口的本质是契约,就像我们人间的法律一样,制定好后大家都遵守

  • 申明接口的关键字是interface

接口的作用:

  • 约束

  • 定义一些方法,让不同的人实现

  • 方法都是public abstract

  • 常量 public static final

  • 接口不能被实例化

  • implements可以实现多个接口

  • 必须要重写接口中的方法

package oop.demointerface;
//定义的关键字,接口都需要有实现类
public interface Interface {
   //接口中的所有定义其实都是抽象的 public abstract
   int age = 999;
   //接口中的所有定义的方法都是抽象的,public abstract
   void add(String name);
   void delete(String name);
   void update(String name);
}
package oop.demointerface;
//实现了接口的类,就需要重写接口中的方法
//利用接口可以实现多继承
​
public class Interface_1 implements Interface,TimeService{
​
   @Override
   public void add(String name) {
​
  }
​
   @Override
   public void delete(String name) {
​
  }
​
   @Override
   public void update(String name) {
​
  }
​
   @Override
   public void timer() {
​
  }
}

内部类

内部类就是一个类的内部再定义一个类,比如A类中定义一个B类,那么B类就是相对A是一个内部类:

1、成员内部类

2、静态内部类

3、局部内部类

4、匿名内部类

posted on 2021-01-22 20:56  飞翔的蛇皮  阅读(47)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3