ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

day3学习java CLASS

2021-02-03 23:33:12  阅读:191  来源: 互联网

标签:java name 子类 day3 CLASS new 父类 方法 public


面向对象

类class

方法:比如main

调用方法:

方法分为静态方法 加static、非静态方法

静态方法可以直接类名。方法名调用

非静态时候只能实例化这个类

然后才能调用其中的非静态方法

Class class = new Class();

方法对方法调用的时候:

都是非静态或都是静态方法 可以调用

值传递

引用传递

类、对象

new关键字创建对象

类中构造器

快捷键 ALT+Insert 可以快速创建构造器

package kuangStudy.oop.Demo02;

public class Person {

    String name;

    //构造方法 没有返回值 与类名相同
    public Person()//无参构造
    {
        this.name = "asdf";
    }
    //使用new关键字 必须要有构造器

    //有参构造

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

    //一旦定义了有参构造,无参构造就必须显式定义

}

内存分析

对象在堆里面

栈里面的是引用对象 在栈里面

封装

高内聚:类的内部操作细节自己完成 不需要外部干涉

低耦合:暴露少量的方法给外部使用

封装:数据的隐藏

​ 禁止访问数据的实际表示

private 属性私有

提供一些方法:get()、set()

package kuangStudy.oop.Demo02;

public class Student {

    //私有的属性
    private String name;
    private int id;
    private char sex;

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public char getSex() {
        return sex;
    }

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

    public void setId(int id) {
        this.id = id;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }
}

实际上这个代码完全是靠alt+Insert快捷键 可以自动生成方法

封装的作用:

可以通过内部的封装让类的对象的属性更加安全

可以监管set的值 防止外部随意破坏类

  1. 提高程序安全性、保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 可维护性增加了

继承

对一批类进行抽象

extends 父类

Ctrl+H 快捷键

展示继承树

java中 所有类直接或间接继承了object类

java中只有单继承 没有多继承

一个子类只能有一个父类

一个父类可以有多个子类

Super

子类的一个方法:

存在形参、子类属性、父类属性

可以分别通过:

name

this。name

super。name

调用

子类调用一个方法

method()

this。method()

会调用子类的方法

super。method()会调用父类的同名方法

父类的方法必须是public的 不能是private的

私有的东西无法被继承

new一个子类的时候

会先构造一个父类,然后构造子类

若要调用父类构造器 必须在子类的构造器中

父类没有无参构造 子类自然而然也不能进行无参构造

方法重写

重写与属性没有关系

都是方法的重写

静态和非静态的方法有区别:

  1. 方法带static修饰的时候:

    父类可以 new子类

    父类的引用指向了子类

    会调用的是父类的方法

  2. 去掉static

    就是重写

    父类调用的是子类的重写的方法

同时方法得是public的

多态

方法才有多态性

属性没有

一个对象的实际类型是确定的

但是指向的引用类型就不确定了:父类的引用可以指向子类

子类重写的父类的方法后 会执行子类的方法

指向子类的父类引用不能调用子类特有的方法

能执行的方法取决于对象左边的类型

class1 a = new class2()

取决于class1

使用子类的方法 会强制转换父类引用到子类

多态注意事项:

instanceof

比较对象是否属于一个类 满足父子关系

可以用于判断是否有关系能否强制转换

匿名代码块

static的静态代码只会执行一次

匿名代码块每次生成对象都会执行一次 比构造器更早

静态导入包

import static java.lang.Math.random

可以直接使用random方法

抽象类

public abstract class

抽象方法: public abstract void method(){
}

抽象类的方法必须由子类实现(重写)

除非子类也是abstract类

不能new一个抽象类

抽象类中也可以有普通方法

但抽象方法只能在抽象类中

接口

只有规范化

自己没办法写方法

相当于专业约束的抽象

约束和实践分离

面向接口的编程

image-20210203211106176

实现一个接口:

要有实现类:

class xxxImpl Implements 接口名

package kuangStudy.oop.Demo02;

public class my_interfaceImpl implements my_interface{
    @Override
    public void add(String name) {
        
    }

    @Override
    public void delete(String name) {

    }
}

利用接口实现多继承

implements 多个接口

接口中定义的属性 都是常量

public static final

内部类

类中定义类

成员内部类

类里面定义一个类

Outer outer = new Outer();

outer.new Inner();
//内部类可以访问外部类的私有变量

静态内部类

加上static

不能得到外部非静态的属性

在一个java文件

写的第二个class

不能是public class

方法里面写一个类

public void method()
{
    class Inner{
        
    }
}

匿名类

new Class().method();

new UserService()
{
  public void hello(){
      
  }  
};
    //重写接口的类 而且是匿名的

异常

Exception

运行时和非运行时异常

try、catch、finally

throw

throws

捕获多个异常

小的异常放前面的catch

知道有错 主动抛出异常

throw new exception();

在方法里面使用

假设这个方法中 无法处理异常 就向外抛出

throw

快捷键 自动生成异常捕获 Ctrl Alt T

标签:java,name,子类,day3,CLASS,new,父类,方法,public
来源: https://www.cnblogs.com/jaosnwww/p/14370353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有