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

Java面向对象

时间:2023-07-05 16:13:09浏览次数:35  
标签:调用 Java name 子类 面向对象 父类 方法 public

Java面向对象

什么是面向对象

 1. 面向过程 步骤简单清晰
 2. 面向对象 分类的思维模式 适合处理复杂的问题
 3. oop 以类的方式组织代码,以对象的组织(封装)数据
 4. 特点: 抽象
 5. 特性: 封装、继承、多台

回归方法的定义和调用

 1. 方法的定义
    1. return代表方法结束了
    2. 修饰符 返回值类型 方法名 方法体 返回值 异常抛出
    3. public void say() thorws IOException{}
 2. 方法的调用
    1. 静态方法  可以使用类直接调用
    2. 非静态方法 一定要创建实例才能调用
    3. static方法是和类一起加载的 而static的方法是在实例后才创建的  所以static方法是没办法直接在类中调用非static方法的
    4. java是值传递的  只会传值给他 所以形参修改不会修改原来的参数 引用传递的情况

类和对象

 1. 构造器 没有返回值 方法名和类的名字相同
 2. 构造器的作用, 实例化初始值
 3. new一个对象的时候本质是调用构造器
 4. 一旦定义了有参构造 就一定要显式的定义无参构造

对象的引用

 1. 对象是通过引用来操作的
 2. 栈中存有实际对象的引用,栈--->堆
 3. 类实例化为对象的时候 属性(成员变量)会初始化
 4. 对象的方法和属性都通过 实例名.方法or属性
 5. 静态的属性和动态的方法 

封装

 1. 高内聚 低耦合 类的内部数据操作细节自己完成 不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
 2. 封装大部分时间都是对属性的 并且同时给属性提供一些public的get or set 方法
 3. 封装的意义: 属性私有/get/set 安全 

继承

 1. 子类继承了父类 就会继承所有方法 extends
 2. 父类的私有属性会被隐式继承
 3. 在java中所有的类都直接或者间接继承object
 4. java中只能单继承 不能多继承

super - this

 1. super调用父类的属性和方法
 2. this调用子类的属性和方法
 3. 默认会调用子类(自己)的属性和方法
 4. 父类的private方法和属性是不能用super直接调用的
 5. 构造函数会先调用父类的构造方法( 其实调用的是super(); )
 6. 父类的构造函数(super();)必须放在子类构造器的第一行
 7. 子类的构造器this()同样只能放在第一行,但是父类和子类的构造方法只能存在一个

方法的重写

 1. 重写和重载的区别要注意
 2. 重载是自己类中的同一个方法依据传参所修改
 3. 重写是子类重写父类的方法
 4. 优先使用子类的方法
 5. 重写只能重写方法 和属性没有关系
 6. 重写跟静态方法没有关系
 7. 非静态方法才能重写 并且参数列表必须相同
 8. 方法的范围可以扩大但是不能缩小(public>protected>default>private)
 9. 抛出的一场:范围可以缩小 但是不能扩大

多态

 1. 实现动态编译
 2. 一个对象的实际类型是确定的
 3. 但是一个对象的引用类型不一定
 4. 父类的引用可以指向子类
 5. Person person = new Student();
 6. 会优先调用子类重写的方法
 7. 某个对象能执行什么方法主要看声明类的时候(左边)有哪些方法 比如上面就是只能调用Person存在的方法 不能直接调用子类自己的方法
 8. 某个类能调用的方法都是自己的和父类的
 9. 可以通过强制转换成子类然后调用子类的方法((Student) person).子类方法
 10. final/static/private是不能重写的 所以也不能多态

instanceof

 1. instanceof能判定类的亲子关系
 2. 子类可以直接转换成父类
 3. 父类转换成子类需要强制转换 主要用于使用子类的特有防范 重写方法可以直接调用子类的
 4. 子类转化成父类可能丢失一些方法

static关键字

 1. 静态的变量是类的  在内存中只有一个  
 2. 静态的方法也是类的  可以直接调用
 3. 只有跟类一起加载的方法和属性才可以直接访问
 4. 静态方法块>匿名方法块>构造方法
 5. 静态方法块是和类一起加载的 所以只运行一次 匿名和构造会每次实例化的时候调用

抽象类

 1. abstract修饰类 就是抽象类 或者抽象方法
 2. 继承了抽象类的子类一定要实现他的方法 除非子类也是抽象类 (这样就由下一层的子类实现)
 3. 抽象类并不能new 不能实例化
 4. 抽象类可以写普通方法  但是有抽象方法一定是必须是抽象类

接口

 1. 只有规范 自己无法写方法~ 约束和实现分离:面向接口编程
 2. 接口的本质是锲约
 3. interface是接口关键词
 4. 接口里面不能实现方法
 5. 接口中只能定义抽象接口(public abstract)
 6. 接口都需要要实现类(implemnets)
 7. 实现了接口的类一定要实现接口中的方法
 8. 可以多继承接口实现多继承

内部类

 1. 通过外部类来实例化内部类
 2. Outer.Inner inner = outer.new Inner();
 3. 静态内部类/局部内部类/
 4. 一个java类中可以有多个class类 但是只能有一个public类
package oop;

public class Student extends Person{

    public Student(){
    }
    public Student(String name,int age){
        super(name,age);
    }

    public String getName() {
        System.out.println("子类重写方法");
        return super.getName();
    }

    public void setName(String name) {
        super.setName(name);
    }

    public int getAge() {
        return super.getAge();
    }

    public void setAge(int age) {
        super.setAge(age);
    }

    @Override
    public void saySomething() {
        System.out.println("重写了这个syaSomething方法");
//        super.saySomething();
    }
}

package oop;

public class Person {
    private String name;
    private int age;

    //构造函数
    public Person() {

    }

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

    //方法
    public void saySomething(){
        System.out.println("这个人说了一句话");
    }

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package oop;

public class Demo01 {
    public static void main(String[] args) {
        Person student = new Student("zhouaicai",12);
        System.out.println(student.getName());
        student.saySomething();
        Object object = new Object();

    }

}

标签:调用,Java,name,子类,面向对象,父类,方法,public
From: https://www.cnblogs.com/dmbj/p/17528810.html

相关文章

  • JavaWeb知识
    day01-XML&tomcatXML介绍XML:eXtendsiblemarkuplanguage可扩展的标记语言XML有什么用?1.可以用来保存数据2.可以用来做配置文件3.数据传输载体定义XML其实就是一个文件,文件的后缀为.xml文档声明简单声明:version:解析这个xml的时候,使用什么版本的解析器解析<?xmlversi......
  • JAVA 调试高内存占用与CPU满载异常场景
    高内存占用,堆溢出,OOM代码: @RequestMapping(value="/oom",method={RequestMethod.GET}) publicResultBasegetMessage2()throwsInterruptedException{ List<String>strList=Lists.newArrayList(); for(inti=0;i<10240;i++){ strLi......
  • java常见面试题分析及答案
    new一个object对象占多少字节对象头加实例数据16个字节java反射的优缺点Java反射的优点1.增加程序的灵活性,避免将程序写死到代码里2.代码简洁,提高代码的复用率,外部调用方便3.对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法Java反射......
  • Java批量操作Excel文件实践
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言|问题背景在操作Excel的场景中,通常会有一些针对Excel的批量操作,批量的意思一般有两种:对批量的Excel文件进行操作。如导入多个Excel......
  • JavaScript
    JS变量//varletconstvar:很少使用,全局作用域let:值可以被修改const:值不能被修改,而且需要在声明时初始化数值console.log('helloworld') //这是我的第一个js代码;letbbb//声明bbb=30//赋值bbb=31//修改console.log(bbb)......
  • java的可选链Optional
    Optional是Jdk1.8提供的一个新类,用以解决null判断问题,作用类似于JavaScript中的可选链例如如下场景:privatevoidgetIsoCode(Useruser){if(user!=null){Addressaddress=user.getAddress();if(address!=null){Countrycount......
  • java 中协变,逆变,不变简单理解
    1.什么是协变、逆变、不变假设有两个类,Dog和Animal,如果用Dog<=Animal表示它俩的继承关系。用f(type)表示类型构造器,一个已知的类型被类型构造器处理后就是一个崭新的类型。协变就是f(Dog)是f(Animal)的子类,即f(Dog)<=f(Animal);逆变就是f(Animal)是f(Dog)的子类,即f(Ani......
  • JAVA设计模式之建造者模式
    设计模式设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、......
  • 单线程JavaScript为何如此高效
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址什么是js执行机制JavaScript的执行机制指的是JavaScript代码在运行时的工作方式和顺序。它涉及以下几个关键概念:单线程:JavaScript是一门单线程的编程语言,意味着它只有一个主线程用于执行代码。这意味着JavaScrip......
  • java双冒号写法(Lambda的简写)
    类似这种Person::getName,双冒号写法,是Java8对Lambda表达式的简写常见的简写场景有以下是Java8中方法引用的一些语法:静态方法引用(staticmethod)语法:classname::methodname例如:Person::getAge对象的实例方法引用语法:instance::methodname例如:System.out::println对象的超类方......