IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java入门之面向对象小结 -> 正文阅读

[Java知识库]Java入门之面向对象小结

?1.万物皆对象

package oop;

public class OopTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.call();
        p.message();
        p.learn();

        System.out.println(p.brand);//null
        System.out.println(p.price);//0.0
        System.out.println(p.size);//0.0
        System.out.println(p.color);//null
        //以下为匿名对象,其实我更喜欢这么写 0.0
        new Phone().call();
        new Phone().learn();
        new Phone().message();

        System.out.println(new Phone().brand);
        System.out.println(new Phone().price);
        System.out.println(new Phone().size);
        System.out.println(new Phone().color);


    }
}


class Phone{
    //特征(属性)--类的成员变量来描述--位置:类里方法外
    String brand;//品牌
    double price;//价格
    double size;//尺寸
    String color;//颜色

    //行为(功能)--类的方法来描述--修饰符 返回值类型 方法名(参数列表){方法体}
    public void call() {
        System.out.println("正在打电话");
    }
    public void message() {
        System.out.println("正在发短信");
    }
    public void learn() {
        System.out.println("正在看直播");
    }
}

2.面向对象的三大特征:封装,继承,多态

2.1封装:

?属性封装后无法直接查看和修改,需要generate Getter() and Setter().也可以用构造方法修改

//封装
private String brand;
//第一种更改和查看方法
p.setBrand("Huawei");
System.out.println(p.getBrand());
//第二种更改方法,生成一个带参数的构造方法
public Phone(String brand) {
    this.brand = brand;
}
Phone p = new Phone("Huawei");
//或者这样写
System.out.println(new Phone("Huawei").getBrand());

访问控制符:

?2.2构造方法

Phone p = new Phone();
new Phone();//都会调用无参构造

Phone p = new Phone("Huawei");
new Phone("Huawei");//调用含参构造

/*******************************************/
new Phone().call();//先去调用无参构造,再执行call()方法

2.3构造代码块

  1. 位置: 在类的内部,在方法的外部
  2. 作用: 用于抽取构造方法中的共性代码
  3. 执行时机: 每次调用构造方法前都会调用构造代码块
  4. 注意事项: 构造代码块优先于构造方法加载

2.4局部代码块?

  1. 位置: 在方法里面的代码块
  2. 作用: 通常用于控制变量的作用范围,出了花括号就失效
  3. 注意事项: 变量的作用范围越小越好,成员变量会存在线程安全的问题

?注意执行顺序:构造代码块->构造方法->普通方法->局部代码块

new Phone().call();

1.执行构造代码块2.执行无参构造3.执行方法4.执行局部代码块

2.5 this?

功能1.调用本类中的成员变量

功能2.this(),用于构造方法中,调用无参或者含参构造,注意不能用于普通方法

3.继承

3.1概念

继承是面向对象最显著的一个特征
继承是从已有的类中派生出新的类,新类能吸收已有类的数据属性和行为,并扩展新的能力.
Java继承是会用已存在的类的定义作为基础建立新类的技术
新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类(超类/基类)
这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用.

3.2特点


1.相当于子类把父类的功能复制了一份
2.Java只支持单继承
3.继承可以传递(爷爷/儿子/孙子这样的关系)
4.父类的私有成员也会被继承,但由于私有限制访问,所以子类不能使用父类的私有资源
5.继承多用于功能的修改,子类可以在拥有父类功能的同时,进行功能拓展


3.3super

1.super.xx -->父类的成员变量

2.子类的构造函数默认有super();

package oop;

public class OopTest {
    public static void main(String[] args) {
        new Phone().call();
        System.out.println("****");
        new Iphone().call();
    }
}
class Phone{
    static {
        System.out.println("静态代码块");
    }
    static double price;//价格
    double size;//尺寸
    String color;//颜色
    {
        System.out.println("我是一个构造代码块");
    }
    public Phone(){
        System.out.println("父类无参构造");
    }
    public void call() {
        System.out.println("正在打电话");
        {
            System.out.println("我是一个局部代码块");
       }
    }
}
class Iphone extends Phone{
    public Iphone(){
        //super();
        System.out.println("子类无参构造");
    }
//    public void call(){
//        System.out.println("子类打电话");
//    }
}

?执行结果:

?****补充一道多态题目,求输出值

package oop;

public class Test {
    public static void main(String[] args) {
        Base b = new Sub();
    }
}
class Base {
    private String baseName = "base";

    public Base() {
        callName();
    }

    public void callName() {
        System.out.println(baseName);
    }
}
class Sub extends Base
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }

null?

3.4 Static

3.4.1特点

1.static可以修饰成员变量方法
2.被static修饰的资源称为静态资源
3.静态资源随着类的加载而加载,最先加载,优先于对象进行加载
4.静态资源可以通过类名直接调用,也被称作类资源
5.静态被全局所有对象共享,值只有一份
6.静态资源只能调用静态资源,普通资源可以调用静态资源
7.静态区域内不允许使用thissuper关键字

static double price;//价格
//不用new对象 可以直接加载
System.out.println(Phone.price);

3.4.2静态代码块

静态资源随着类的加载而加载,并且只被加载一次,一般用于项目的初始化
特点: 被static修饰,位置在类里方法外

三种代码块的比较

  1. 静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
  2. 构造代码块:在创建对象时会自动调用,每次创建对象都会被调用,提取构造共性
  3. 局部代码块:方法里的代码块,限制局部变量的范围

3.4.3final

特点
被final修饰的,不能被继承
被final修饰的方法,不能被重写
被final修饰的字段是个常量,值不能被修改
常量的定义形式:final 数据类型 常量名 = 值

?4.多态

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:03:18  更:2021-10-21 12:05:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:21:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码