面向对象知识点的总结(全)

三大基本特征继承 封装 多态继承1.场景: 如果多个类存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。其中,多个类可以称为子类,单独的那个类称为父类、超类、基类继承描述的是事物之间的所属关系,这种关系是:is-a的关系。父类更通用,子类更具体。我们主要是通过继承,可以使事物之间形成一种关系体系。2.定义:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
摘要由CSDN通过智能技术生成

文章目录

面向对象编程(OOP)

Object Oriented Programming
对象 : Object

C 面向过程
C++ 半面向过程半面向对象
Java 面向对象: 把大象装进冰箱.

介绍

什么是类

具有相同特点(属性)和行为(动作)的集合的总称.
人类
植物类

属性和行为

什么是对象
是某一类的具体体现 实例
将类的抽象概念具体化.
人类的对象: 张三,特朗普,…
植物类的对象 : 路边的梧桐,杨树
手机类的对象 : 正在使用的手机
什么是属性
是一类事物的特点/特征.
人类的属性/特征 : 肤色,年龄,身高,体重…
植物类的属性 : 树干,树叶,树根,花,果实
手机的属性 : 价格,重量,颜色,形状
什么是方法
一类事物都可以进行的动作/行为.
人类的动作 : 吃饭睡觉打豆豆
植物的动作 : 开花,结果,光合作用
手机的动作 : 打电话,发短信

方法

什么是方法?

方法:在程序中要去实现的某一个功能,需要包含多条语句,这些语句包含循环语句结构,选择语句结构等共同来处理一件事情.

定义方法的格式详解
public static void main(String[] args){
   
		//执行语句
		System.out.println();
}
	 * [访问修饰符] 返回值类型 方法名([参数1],[参数2],...){
   
	 *     方法内的执行语句;
	 *     ...
	 * }
	 * 访问修饰符 : 控制访问权限
	 * 返回值类型 : 该方法执行后返回的结果的数据类型
	 * 		基本数据类型/引用数据类型	
	 * 		void :,方法执行后不返回任何数据
	 * 		---
	 * 		如果方法需要返回数据,
	 * 		1) 那就需要在返回值类型处写上返回数据的数据类型
	 * 		2) 在方法体的最后使用 return;的格式将值明确显示返回.
	 * 		3)只要不是void,必须在方法后加:  return;
	 *		4)return 后只能有一值;
	 *		5)如果需要返回多个值需要将多个值放进数组或方法,将数组或方法返回
	 *	eg.public static void main(String[] args){
   
	 *			int[] arr = returnMoreValue(1,2);
	 *			System.out.println(arr[0]);
	 *			System.out.println(arr[1]);
	 *	   }
	 *		//方法执行返回多个值:2个值为例
	 *		//需要将多个值放入数组,将数组返回
	 *	   public static int[]  returnMoreValue(int a,int b){
   
	 *	   		int[] arr = new int[2];
	 *			arr[0] = a;
	 *			arr[1] = b;
	 *			return arr;
	 *	   }
	 * 方法名 : 见名知意,驼峰原则
	 * () 参数列表 : 
	 * 		1 形式参数 : 该方法执行可能用到的数据
	 * 		2 形式参数的写法: 数据类型 变量名;
	 * 		3 列表内可以写多个参数,多个参数之间用逗号隔开,或者可以不写
	 *		4 当方法参数列表有参数时,在调用时(让方法执行时)
	 *		   就必须给方法的参数赋值	
	 * 参数类型:进入方法当中的数据是一个什么样的类型
	 * 参数名称:进入方法当中的数据对应的变量名称
	 * {
   }  方法体	
	 * 备注:方法不允许嵌套
	 * 执行语句 : 该方法真正的功能体现		

Java中方法的分类

JAVA中方法的分类

构造方法
  • 概述: 构造方法存在于类中,用于给对象(属性)初始化.
  • 构造方法:类或者抽象类中(接口没有),与类名同名,无返回值,不能用static修饰。
  • 格式:权限修饰符 类名(参数){方法体}
  • 作用:初始化实例对象。
  • 调用:创建类的实例对象时,自动调用。
  • 继承性:无参构造其子类会自动调用父类的无斜体样式参构造supper()。含参构造不会被继承。
//顾客类的有参构造方法
public Customer(String name, String idCard, String tel, String address) {
   
        this.name = name;
        IdCard = idCard;
        this.tel = tel;
        this.address = address;
    }

注意:构造方法分为含参构造和无参构造。JAVA会在编译时自动生成无参构造,但若书写了含参构造,则必须自己写无参构造,否则只能调用含参构造。

静态方法
  • 定义:类/接口中,用static修饰的方法。
  • 格式: 权限修饰符 static 返回值类型 方法名(参数){} (static可与final,private共存)
  • 特点:
  1. 静态方法属于整个类,不单独属于类的某一个对象。
  2. 静态方法类加载便存在,比对象先存在,随类而消亡。
  • 调用:
  1. *类名/接口名.静态方法或者 实例对象.静态方法名 两种方式调用,建议使用第一种。
  2. 静态方法可以调用静态成员,不能调用非静态成员。(其先于非静态成员产生)。
  • 继承性:
  1. 类(包括抽象类)其静态方法是可以被继承的。即可以通过:子类名/子类对象.静态方法的方式进行调用。
  2. 接口的静态方法不能被其实现类或者子接口继承。即不能采用:实现类名/实现类对象名/子接口名.静态方法名的方式进行调用。
// 接口1
public interface MyInter1 {
   
    public static void fly(){
   }
}
// 接口2 继承于接口1
public interface MyInter2 extends MyInter1{
   
}
// 实现类实现接口1
public class Myclass implements MyInter1{
   
}
// 测试类
public class Test02 {
   
    public static void main(String[] args) {
   
        Myclass myclass = new Myclass();
        MyInter1.fly();
        // Myclass.fly(); 错误,接口中的静态方法不能被其实现类继承
        // myclass.fly(); 错误,接口中的静态方法不能被其实现类继承
        // MyInter2.fly(); 错误,接口中的静态方法不能被子接口继承

    }
}
实例/默认方法
  • 定义:类中/接口中无static修饰的方法,类中无特殊修饰符,接口中用default修饰
  • 格式:
    类或者抽象类中:权限修饰符 返回值类型 方法名(参数) {方法体}
    接口中:权限修饰符default 返回值 方法名 (参数) {方法体}
  • 特点:实例/默认方法属于类的实例对象.随时对象创建而加载,对象消失而消亡.
  • 调用:只能通过:实例对象/接口的实现类对象.方法名进行调用
  • 继承性:可以被子类继承(接口亦然)
// 接口
public interface MyInter3 {
   
    public default void eat(){
   
        System.out.println("走起,咱今天吃火锅去!");
    }
}
// 类
public class Myclass3 {
   
    public  void eat(){
   
        System.out.println("走起,咱今天吃海鲜去!");
    }
}
// 测试类
public class Test03 {
   
    public static void main(String[] args) {
   
        // Myclass3.eat(); // 错误,不能使用类名调用。
        new Myclass3().eat(); // 可以通过实例对象调用

        // MyInter3.eat(); // 错误,不能使用接口名调用
        new MyInter3(){
   }.eat(); // 可以通过接口的实现类对象调用,这里匿名内部类实际上是接口的实现类对象。
    }
}
抽象方法
  • 定义:抽象类或者接口中,用abstract修饰的方法

  • 格式:权限修饰符 abstract 返回值类型 方法名(参数);(abstract 不能与static 和final修饰符共存)

  • 特点:必须被子类重写,无方法体

  • 调用:子类重写后。按照实例方式的调用方式进行调用。

  • 继承性:必须重写,谈不上继承不继承。

// 抽象类
public abstract class AbstractClass01 {
   
    // 抽象方法
    public abstract void fun();
}
// 子类继承于抽象类
public class Myclass4 extends AbstractClass01{
   
    // 重写抽象方法
    @Override
    public void fun() {
   
        System.out.println("玩得真开心");
    }
}
// 测试类
public class Test04 {
   
    public static void main(String[] args) {
   
        // 创建对象使用重写后的抽象方法
        new Myclass4().fun();
    }
}
// 运行结果
玩得真开心
私有方法
  • 定义:使用private权限修饰符修饰的方法
  • 格式:private 返回值类型 方法名(参数){方法体} (private 可以与static,final,abstract共存)
  • 特点:private只属于本类,不属于其子类对象。
  • 调用:本类可直接调用,其他类或者子类或者该类对象,只能通过类中其他方法进行间接调用。
  • 继承性:可以被子类继承(接口亦然),当也只能通过类中其他方法进行间接调用。
// 父类包含私有方法
public class Myclass5 {
   
    // 私有方法
    private  void eat() {
   
        System.out.print("吃 ");
    }
    // 公有实例方法
    public  void fun(){
   
        eat();
        System.out.println("玩");
    }
}
// 子类
public class Myclass6 extends Myclass5{
   
}
// 测试类
public class Test05 {
   
    public static void main(String[] args) {
   
        // 创建对象
        Myclass5 my = new Myclass5();
        // my.eat; // 报错,不能直接调用私有方法。
        my.fun(); // 可以间接调用私有方法
        // 子类对象间接调用
        System.out.println("分割线===========");
        new Myclass6().fun();
    }
}

数组作为方法参数和返回值

数组作为方法参数

  数组作为应用类型能够当成方法的参数进行传递呢?当然可以

  • 数组作为方法参数传递,传递的参数是数组内存的地址
	public static void main(String[] args){
   
        int[] arr = {
   1,2,3,4,5};
        //调用方法,传递数组
        println(arr);
	}
   public static void println(int[] arr){
   
        for (int i 
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值