Java基础02

1.方法

方法是程序的最小执行单元

  • 注意:

    • 方法必须先创建才可以使用,该过程成为方法定义

    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

java中的方法与c中的函数道理是一样的 ,目的都是为了提高代码复用性,简化代码

1.定义格式

public static 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}

 一个简单的方法的定义与使用

public class demo {
    public static void main(String[] args) {
        System.out.println(sum(1,2));
    }


    public static int sum(int number1, int number2) {
        return number1 + number2;
    }
}

 2.方法的重载

  • 方法重载概念

    方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

    • 多个方法在同一个类中

    • 多个方法具有相同的方法名

    • 多个方法的参数不相同,类型不同或者数量不同

  • 注意:

    • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式

    • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(double a) {
    	//方法体
    }
}

public class MethodDemo {
	public static float fn(int a) {
    	//方法体
    }
    public static int fn(int a , int b) {
    	//方法体
    }
}

2.面向对象

客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。

    • 类的理解

      • 类是对现实生活中一类具有共同属性和行为的事物的抽象

      • 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合

      • 简单理解:类就是对现实事物的一种描述

    • 类的组成

      • 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)

      • 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)

  • 类和对象的关系

    • 类:类是对现实生活中一类具有共同属性和行为的事物的抽象

    • 对象:是能够看得到摸的着的真实存在的实体

    • 简单理解:类是对事物的一种描述,对象则为具体存在的事物

1.类的定义

类的组成是由属性和行为两部分组成

  • 属性:在类中通过成员变量来体现(类中方法外的变量)

  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

①定义类

②编写类的成员变量

③编写类的成员方法

public class 类名 {
	// 成员变量
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;
	…
	// 成员方法
	方法1;
	方法2;	
}

定义一个学生类

public class Student {
    private int id;
    private String name;
    private int age;

    void study() {
        System.out.println(name + "正在学习java");
    }
}

 2.对象的使用

  • 创建对象的格式:

    • 类名 对象名 = new 类名();

  • 调用成员的格式:

    • 对象名.成员变量

    • 对象名.成员方法();

public class TestStudent {
    public static void main(String[] args) {
        Student student = new Student(1, "张三", 20);
        student.study();
    }
}

输出结果为:

3.封装

  1. 封装概述 是面向对象三大特征之一(封装,继承,多态)

    对象代表什么,就得封装对应的数据,并提供数据对应的行为

  2. 封装代码实现 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法

4.this关键字

  • this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

    • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量

    • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

5.构造方法

构造方法是一种特殊的方法

  • 作用:创建对象 Student stu = new Student();

  • 格式:

    public class 类名{
    
    修饰符 类名( 参数 ) {
    
    }
    
    }

  • 功能:主要是完成对象数据的初始化

注意:构造方法可重载

6.static关键字

6.1 静态变量

**定义格式**

修饰符 static 数据类型 变量名 = 初始值;  

 访问格式: 类名.静态变量

6.2静态方法

定义格式

修饰符 static 返回值 方法名称{
}

访问格式:类名.静态方法

静态变量也可通过创建对象进行访问

7.继承

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:

class 父类 {
	...
}

class 子类 extends 父类 {
	...
}

需要注意:Java是单继承的,一个类只能继承一个直接父类,跟现实世界很像,但是Java中的子类是更加强大的。

对继承的理解:继承很大的程度上提高了代码复用性,子类在继承父类后可以调用父类的相关变量与方法,也可重写父类中的方法

子类不能继承的东西:

子类不能继承父类的构造方法。

值得注意的是子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已,可以通过getter/setter方法访问父类的private成员变量。

8.super关键字

子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super 关键字,修饰父类成员变量,类似于之前学过的 this

需要注意的是:super代表的是父类对象的引用,this代表的是当前对象的引用。

使用格式:

super.父类成员变量名

9.多态

多态是继封装、继承之后,面向对象的第三大特性。

多态是出现在继承或者实现关系中的

多态体现的格式

父类类型 变量名 = new 子类/实现类构造器;
变量名.方法名();

多态使用的场景:

现在有三个对象 Dog  Cat  Pig, 一个方法 public void eat(Dog d) { d.eatFood(); };

针对于调用不同对象时方法的形参会是不同的对象,为了防止代码重复,我们这里就可以使用多态的知识,可知这三个对象都继承于Animal,我们可以定义方法为

public void eat (Animal a){ a.eatFood() ;};

从而根据传递对象的不同,调用不同的eatFood方法

10.instanceof 关键字

变量名 instanceof 数据类型 
如果变量属于该数据类型或者其子类类型,返回true。
如果变量不属于该数据类型或者其子类类型,返回false。

  新特性

JDK14的时候提出了新特性,把判断和强转合并成了一行

//新特性
//先判断a是否为Dog类型,如果是,则强转成Dog类型,转换之后变量名为d
//如果不是,则不强转,结果直接是false
if(a instanceof Dog d){
    d.lookHome();
}else if(a instanceof Cat c){
    c.catchMouse();
}else{
    System.out.println("没有这个类型,无法转换");
}

11.权限修饰符

  • public:公共的,所有地方都可以访问。

  • protected:本类 ,本包,其他包中的子类都可以访问。

  • 默认(没有修饰符):本类 ,本包可以访问。

    注意:默认是空着不写,不是default

  • private:私有的,当前类可以访问。 public > protected > 默认 > private

不同权限的访问能力

publicprotected默认private
同一类中
同一包中的类
不同包的子类
不同包中的无关类


12.final关键字

  • final: 不可改变,最终的含义。可以用于修饰类、方法和变量。

    • 类:被修饰的类,不能被继承。

    • 方法:被修饰的方法,不能被重写。

    • 变量:被修饰的变量,有且仅能被赋值一次。

13.抽象类

我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类。  

定义格式:

修饰符 abstract 返回值类型 方法名 (参数列表);

注意:

1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类,编译无法通过而报错。

5.抽象类存在的意义是为了被子类继承。

14.接口

接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接口同样是不能创建对象的。  

//接口的定义格式:
interface 接口名称{
    // 抽象方法
}

// 接口的声明:interface
// 接口名称:首字母大写,满足“驼峰模式”

 实现接口

类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements关键字。

/**接口的实现:
    在Java中接口是被实现的,实现接口的类称为实现类。
    实现类的格式:*/
class 类名 implements 接口1,接口2,接口3...{

}

15.内部类

定义:将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。可以把内部类理解成寄生,外部类理解成宿主。

public class Test {
    public static void main(String[] args) {
        //  宿主:外部类对象。
       // Outer out = new Outer();
        // 创建内部类对象。
        Outer.Inner oi = new Outer().new Inner();
        oi.method();
    }
}

class Outer {
    // 成员内部类,属于外部类对象的。
    // 拓展:成员内部类不能定义静态成员。
    public class Inner{
        // 这里面的东西与类是完全一样的。
        public void method(){
            System.out.println("内部类中的方法被调用了");
        }
    }
}

匿名内部类 :是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。

new 类名或者接口名() {
     重写方法;
};

 

  • 46
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值