首页 > 编程语言 >Java面向对象

Java面向对象

时间:2022-11-03 00:47:21浏览次数:38  
标签:Java super 子类 面向对象 Student 父类 方法 public

面向过程 & 面向对象

思想

面向过程:将一件事情步骤化(只适合处理较为简单的问题)
面向对象:思考问题会将问题进行分类,再对分类进行单独思考。最后才会对某个分类下的细节进行面向过程的思索(更适合处理大型复杂问题,适合处理多人协作的问题)

面向对象编程的本质:以类的方式组织代码,以对象的封装数据
抽象

三大特性

封装

高内聚/低耦合:类的内部数据操作细节自己完成,不允许外部干涉/仅暴露少量的方法给外部使用
封装:应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
属性私有:get/set

private 访问关键字来实现封装
在这里插入图片描述

继承

派生:在继承了一些东西基础上增添新的东西

Java类只有单继承,没有多继承(只有接口有多继承)
子类继承父类,关键字extands来表示
子类和父类之间,从意义上讲具有“is a”的关系
Object 是所有类的基类

super
super注意点

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法
    vs this
  • this:指本身调用者这个对象
  • super:父类的引用
  • this没有继承也可以使用
  • super有继承才可使用

构造方法

  • this 本类的构造
  • super 父类的构造
    在这里插入图片描述

方法的重写

重写只能public 父类与子类

重写:需要继承的关系 子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符,范围可以扩大不能缩小 public>protected>Default>private
4.抛出的异常,范围,可以被缩小,但不能扩大 classNotFundException -> Exception
重写:子类和父类的方法必须一直,方法体不同
1.父类的功能子类不一定需要 或者不一定满足

多态

同一个方法根据发送对象的不同采用多种不同的行为方式
一个对象的实际类型是确定的,但可以指向对象的引用的类型很多

Person p =  new Student(); //向上提型
Student p1 = new Student();

多态存在的条件

  • 有继承关系
  • 子类重写父类方法
  • 父类引用指向子类对象

注意:多态是方法的多态,属性没有多态性.

static方法:属于类,不属于实例
final 常量 没有继承
private 方法 私有 不能继承

instanceof (类型转换-引用类型)

//(子类)父类 
Person p1 = new Student();
Student p2 = (Student)Person;
  • 将 子类转换为父类 向上转型(会丢失子类特有属性和方法)
  • 把父类转换为子类 向上转型 强制转换
  • 方便方法的调用,减少重复的代码

抽象类

abstract修饰符来修饰类/方法
只有约束没有实现
抽象出来,提高开发效率

  1. 不能new这个抽象类 只能靠子类去实现它:约束
  2. 抽象类中可以写普通方法
  3. 抽象的方法必须在抽象类中
public abstract class Action {
    public abstract void do();
}

创建与初始化对象

public class Studen {
     //属性
     String name; //null 抽象的类属性 最好不要赋值
     int age; //0
     final String name2; //
     //方法
     public static void main(String[] args){
         //**创建一个实例对象**
         Student stu = new  Sudent();
     }
}

构造器

  1. 每个类都有一个隐式构造器
  2. 必须没有返回类型,也不能也void
    3.作用:1.用于初始化属性 2.new 本质在调用构造方法
    4.注意:定义有参构造器之后 如果还想用无参构造,显示定义一个无参的构造
**无参构造**
public class Student {
    String name;
   public Student(){
       //初始化属性
       this.name = "张三";
   }
}
**有参构造**
 public class Student {
    String name;
   public Student(type var){
       //初始化属性
       this.name = "张三";
   }
}

访问关键字

访问关键字

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其它包
publicYYYYY
protectedYYYY/N(说明)N
defaultYYYNN
privateYNNNN

接口的默认访问权限为public

对象的内存

在这里插入图片描述

接口

作用

1.定义约束,方法让不同人实现
2.方法 public abstract
3.属性 public static final 常量
4.接口不能被实例化 接口没有构造方法
5.implements可以实现多个接口继承(伪继承)
6.实现接口的类必须重写接口的方法

请添加图片描述

在这里插入图片描述
请添加图片描述

N中内部类

成员内部类

可以获取外部类的私有属性

局部内部类

静态内部类

匿名内部类

标签:Java,super,子类,面向对象,Student,父类,方法,public
From: https://www.cnblogs.com/worker618/p/16853067.html

相关文章

  • Java基础
    常见快捷键全选ctrl+a复制ctrl+c粘贴ctrl+v撤销ctrl+z保存ctrl+s关闭窗口alt+F4永久删除shfit+Delete常用DOS命令盘符切换d;查看当前目录下的所有文......
  • Java RMI分析与利用
    一.RMI介绍RMI(RemoteMethodInvocation)远程方法调用,顾名思义,是一种调用远程位置的对象来执行方法的思想。在Java中,我们通常传递一个完整的对象,这个对象既包含数据......
  • 关于Java的volatile关键字、内存屏障的思考
    内存屏障就是一种屏障指令,在X86架构中,指的是加了“lock前缀”的汇编指令在执行时会让CPU或编译器在对内存进行操作的时候,严格按照一定的顺序来执行。也就是说......
  • Java反射
    一Java安全可以从反序列化漏洞开始说起,反序列化漏洞⼜可以从反射开始说起正是反射使得Java拥有了动态特性,对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私......
  • 学习Java的第三天 运算符
    运算符算术运算符注意事项需要注意的是i++和++i的区别i++运行完这行代码后在进行自增或自减++i在运行这行前就进行自增或者自减运算结果的数据类型为参与运算的......
  • Java函数式编程:二、高阶函数,闭包,函数组合以及柯里化
    承接上文:Java函数式编程:一、函数式接口,lambda表达式和方法引用这次来聊聊函数式编程中其他的几个比较重要的概念和技术,从而使得我们能更深刻的掌握Java中的函数式编程。......
  • java生成pdf
    参考链接https://blog.csdn.net/weixin_39806100/article/details/86616041https://www.cnblogs.com/next-yrz/p/10134670.htmlhttps://www.likecs.com/show-306660785.......
  • java----GUI编程
    1packagecom.cilinmengye.HouseWork5;23importjavax.swing.*;4importjava.awt.*;5importjava.awt.event.ActionEvent;6importjava.awt.event.Actio......
  • java中string类的使用
    packagecom.te.jdkapi;/*字符串不可变。一经初始化就不会改变*/publicclassStudy_String{publicstaticvoidmain(String[]args){Stringa="1......
  • Java学习——10.02
     不得不说,Java真的很好上手,只不过搭建环境真的难。今天的话搞了一个喜欢的Java开发背景图,看着就心情愉悦。再加上今天idea学生认证下来,就很棒!    废话不多说进入正......