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知识库 -> 郭郭说Java03 -> 正文阅读

[Java知识库]郭郭说Java03

面向对象(预)

你好! 这里是面向对象方面的知识,是最最最重点的部分,希望能带来帮助。

方法(函数)

方法:能够实现某个功能的代码块------------------(五要素)
格式: 1访问修饰符号 2返回值类型 3方法名(4参数列表<可有可无>){
5代码块
}
1.访问修饰符:public(公共的) protected(受保护的) default(默认的) private(私有的)
2.返回值类型:如果需要返回值,则用相应的返回值类型。(int…)有返回值一定要用return 返回相应的类型。
如果不需要方法返回结果,则需要用void返回值类型
3.方法名:命名规则和变量一样 (请看之前的博客)
4.参数列表:可有可无,如果需要第三方代码块则可以有。
无参:
public class HelloWord {
public static void main(String[] args) {
int n=add();
System.out.println(n);
}
public static int add(){
return 1+1;
}
}
有参:
public class HelloWord {
public static void main(String[] args) {
int n=add(3,4);
System.out.println(n);
}
public static int add(int a,int b){
return a+b;
}
}

面向对象(一)

1.类与对象

类:同一事物的总称。人类、种类…
电脑类
对象:客观存在的事物(具体存在)
我所使用的拯救者电脑
(万物皆对象)
eg:人类 ---->类
马爸爸----->对象(静态属性和动态行为)

属性:身高、体重、长相…
方法:动态行为就是方法。

类:
public class Human {
//属性:特点(静态)
String name;//姓名
int age;//年龄
String sex;//性别

//方法:行为(动态)
public void  say(){
    //说话的方法  代码块
    System.out.println("我要给博主10个亿~~");
}

}

2.全局变量、成员方法、局部变量

成员变量(全局变量):类的属性/特点(有默认初始值可以不用初始化)int–0;double—0.0; String–null
成员方法:类的行为
局部变量:在成员方法里面定义的属性(在方法创建时被创建在方法执行结束时被销毁)使用的时候必须赋值操作或者初始化,否则会报错。

3.构造方法(构造器)

两类 (有参构造/无参构造)
定义:与类名同名的方法
构造方法没有返回值,并不是指void,而是直接省略返回值这个选项
作用:初始化
public class Human {
//属性:特点(静态)
String name;//姓名
int age;//年龄
String sex;//性别
//方法:行为(动态)
public Human(){
System.out.println(“我是构造方法”);
}
}

4.对象的创建

使用new关键字调用构造方法就可以创建一个对象
格式:类名 对象名=new 类名/构造方法();
public class Human {
//属性:特点(静态)
String name;//姓名
int age;//年龄
String sex;//性别
//方法:行为(动态)
public Human(){
System.out.println(“我构造方法”);
name=“郭郭”;
}
public void say(){
System.out.println(“给博主10个亿~~”);
}
public static void main(String[] args) {
//main 程序入口
//创建一个对象 格式:类名 对象名=new 类名/构造方法();
/*
* Human:表示人类
* human:表示对象的引用 引用new Human()创建出来的对象
* new Human():创建新的对象
* */
Human human=new Human();
//获取对象的属性: 对象名.属性
System.out.println(human.name);//null
//给对象属性赋值: 对象名.属性=值
human.name=“马爸爸”;
System.out.println(human.name);//GuoGuo
//调用普通方法 :对象名.方法()
human.say();
Human human1=new Human();
System.out.println(human= =human1);//false 每使用一次new都会创建一个新的对象
Human human2=human;
System.out.println(human==human2);//true ==作用在引用数据类型表示地址比较
System.out.println(human.equals(human1));//false

    Human human3=new Human();
    System.out.println(human3.name);//guoguo

}
}

5.同一个类中不能同时存在两个方法名一样的方法,除非重载。

重载:方法名相同,但参数列表不同(指参数列表类型、顺序不同与参数名无关。)方法的重载与方法访问修饰符以及返回值类型无关。
public int add(int a,int b){
return a+b;
}
public int add(int a,double b){
return (int)(a+b);
}

6.有参构造

如果一个类,没有构造器则会默认添加无参构造器。
Human human4=new Human(“郭郭”);
public Human(String s){
System.out.println(s);
}

this关键字

this:指代的是本类。
Human human4=new Human(“郭郭”);
public Human(String name){
System.out.println(name);//郭郭
System.out.println(this.name);//全局变量的name
this.name=name;
System.out.println(this.name);//郭郭
}

7.继承

继承:子类继承父类,会继承父类所有的非私有的属性和方法。
格式: public class 子类 extends 父类{
}---->表示子类继承父类
如何设计父类?
将子类共有特点和行为抽离定义成父类。
如何设计子类?
将子类特有的特点和行为定义在子类中,其他的特点和行为使用父类的

调用方法
如果子类中有和父类相同的方法,就会调用子类的方法父类的方法就会被覆盖-------->方法的覆盖(重写)

子类继承父类,则他们的构造方法执行顺序是?
无参构造器:
先执行父类的构造方法然后执行子类的方法。
this–>当前对象
super–>父类对象(this和super只能存在一个并且在第一行)
在子类构造器中,默认会在第一行添加super()调用父类的构造函数。
有参构造器:
子类中无论有参还是无参默认在第一行都是父类的无参构造器,然后调用子类有参构造器。

注意:1.Java只能单继承,一个Java类只能继承一个类
2.Java中可以多重继承,继承具有传递性。爷爷->爸爸->儿子

8.方法的重写和重载

重载overload:一个类,方法名相同,参数列表不同,顺序也不同,与参数名无关,与访问修饰符和返回值无关。
重写override:两个类以及以上,发生在子类和父类的关系上,当子类中含有和父类方法名相同参数列表也相同的方法时,就不会调用父类方法,直接调用子类方法。(两同两小一大)

9.访问修饰符

public(公共的) 同类 1 同包不同类 1 不同包子类 1 不同包非子类 1
protected(受保护的) 同类 1 同包不同类 1 不同包子类 1 不同包非子类 0
default(默认不写) 同类 1 同包不同类 1 不同包子类 0 不同包非子类 0
private(私有的) 同类 1 同包不同类 0 不同包子类 0 不同包非子类 0

10.多态

多态:同一种类型的多种形态。
必须继承同一个父类,必须与继承结合使用。
正常:Cat cat=new Cat();
System.out.println(cat.name);//cat类中的name(子类的name)
向上造型(多态)
//animal:这是一个动物
//cat1:被叫cat1
//new cat():cat1是一只猫
(小–>大 向上转型)
使用多态,属性调用关系看对象类型.
Animal cat1=new Cat();
System.out.println(cat1.name);//父类中的name
使用多态,方法的调用关系是子类覆盖父类。
cat.eat();
cat1.eat();
向下转型:(父类—>子类)

instanceof

A instanceof B:用于判断前面的A对象是否是B类的子类或者实现类的实例,返回Boolean类型。

11.封装(实体类必须封装)

封装:将所有的属性私有化(private修饰)只能在本类中访问,在其他类中访问的话需要通过类中提供特定的getxxx方法和setxxx方法。
public String getName(){
return name;//获取name的值
}
public void setName(String name){
this.name=name;//设置name的值
}
main方法内
person.setName(“郭郭”); //设置
String n=person.getName();
System.out.println(n);//得到

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:56:35  更:2022-01-03 15:57:24 
 
开发: 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/24 8:42:11-

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