mac-Java面向对象9-类

Java面向对象-类

1.概念

对象就是现实中的事物,每种事物都有自己的属性和行为。面向对象思想就是在程序设计过程中,参照现实中的事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。

面向对象的三大特征:封装、继承、多态。

封装:保护内部操作不被破坏

继承:在原本的基础上进行扩冲

多态:在一个指定范围内进行概念的转换

:是一组相关属性和行为的集合。表示的是一个共性的产物,类中定义的是属性和行为。

属性:该事物的状态信息。

行为:就是该事物能做什么(方法)

类用来描述现实社会中的一类事物,对象该类具体事物。

例:动物类

属性:体重、年龄、名字。行为:吃饭、睡觉、排泄。

对象——万物皆对象

对象:一类事物的具体体现,表示一个独立的个体。对象就是类一个实例,所以必然具备该类的属性和行为。

例:一只命臭猪的猪

属性:臭猪、3岁、150斤 。行为:进食、酣睡、拉💩

类和对象的关系

简而言之类是对象的模版,对象是类的实例。类只有通过对象才能使用,在开发中先产生类才有对象。

类的组成

类的组成:成员变量 成员方法 构造方法

编写类的标准格式

​ 成员变量

​ 构造方法

​ 成员方法

注意:在构造类时要生成构造方法

构造方法

构造方法的作用:

  • 是创建对象的时候初始化成员变量使用的
  • 注意:
  • 当你生成了有参构造,就一定要生成无参构造
  • 但你生成了无参构造,不一定需要生成有参构造

类与对象的定义和使用

类的定义
public Class 类名{
  //属性(变量):
  //行为(方法):

}
属性的定义
语法:修饰符 数据类型 属性名;
  //年龄属性
  public int age();
	//名字属性
	public String name();
	//身高属性
	public double height;

构造方法

//构造方法: 给对象进行初始化
//格式:
// A:方法名与类名相同
// B:没有返回值,连void都没有
// C:没有具体的返回值
//构造方法他是在创建对象的时候自动调用

//无参数构造
public  类名() {
		System.out.println("这是无参构造方法...");
	}
//生成有参构造方法
public 类名(String name, int age) {
        this.name = name;
        this.age = age;
    }
行为的定义

行为在Java中被称为方法,c语言和js、python称为函数

语法:修饰符 返回值类型方法的名字(参数){}
public void say(){
  
}
public void eat(){
  
}

示例:定义一个person类

//一个java文件中可以写多个类 
//但是一个java中文中只能写一个public修饰的类,并且public修饰的类名要和文件名一致.
//规范:只写一个类
//class Person类名

/*只能有一个public类*/
public class Person{
  //定义属性
  String name;
  int age;
  //生成无参数构造
 public  Person() {
		System.out.println("这是无参构造方法...");
	}
//生成有参构造方法
public person(String name, int age) {
        this.name = name;
        this.age = age;
    }
  //定义行为输出姓名和年龄
  public void tell(){
    System.out.println("姓名"+name+"年龄"+age)
  }
  
}
/*猫咪类*/
class Cat{
  
}
/*狗勾类*/
class Dog{
  
}

定义类的时候给出默认值

public class Person {

	//属性
	//修饰符  数据类型  属性名;
	//属性的名字   首字母小写,后面驼峰
	
	//年龄属性
	public int age;
	
	//身高属性
	public double height=50;
	
	//名字属性
	public String name;
	
	
	//地址属性
	public String address="中国";
	
	//性别
	public String sex="男";
	
	//行为
	}

类定义完成后并不能直接使用,需要实例化对象才能使用。

对象的声名

我们想要运行java代码,入口类,这个入口类必须有一个main方法

类名称 对象名称 = new 类名称();
/*格式二:先声名对象,然后实例化对象:*/
类名称 对象名称 = null;
  对象名称 = new 类名称

对象可以有多个

public class TestDemo{
  //入口类
  public static void main(String[] args){
  //实例化对象1
  Person p= new Person;
    p.name="CC"/*操作属性类容给属性赋值,当
      					给属性赋值时会覆盖旧的值*/
    p.age=20
  //调用类中的方法
  p.tell()
  //实例化对象2
  Person p2 = new Person
    
  }
}

我们在编写类的时候没有初始化值,系统会自动给出默认值byte short int long 默认是0,float double 是0.0 boolean是false char 是’ ',引用数据类型默认值是null

一个对象堆内存图

在这里插入图片描述

两个对象堆内存图

在这里插入图片描述

三个对象堆内存图

在这里插入图片描述

方法重载

定义:在一个类中有两个方法,他们具有相同的名字,但有不同的参数列表。

也就是说,方法名可以相同,参数列表不同。

class Number2{
	
	
	//我们在实现各种整数相加的时候  方法名不一样的
	//但是方法的命名要遵循见名知意
	//怎么办?
	//针对这种情况,方法的功能相同,参数列表不同,为了见名知意
	//Java就允许这些相同功能,但是不同参数的方法使用同一个名字   专业名词:方法重载
	
	//在一个类中,方法名相同,参数列表不同(参数的类型或者个数不同) 与返回值没有关系 
	
	
	//1.两个整数相加  返回结果
	public int sum(int a,int b) {
		return a+b;
	}
	
	public long sum(long a,int b) {
		return a+b;
	}
	
	
//	public long sum(int a,int b) {
//		return a+b;
//	}
	
	
	//错误的,和方法的参数的名字是没有关系的,因为调用方法是靠方法的参数个数和类型来确定一个方法的
//	public int sum(int b,int a) {
//		
//	}
	
	
	//2.三个整数相加  返回结果
	public int sum(int a,int b,int c) {
		return a+b+c;
	}
	
	
}

public class NumberDemo02 {
	
	public static void main(String[] args) {
		
		
		Number2 number=new Number2();
		System.out.println(number.sum(1, 2));
		System.out.println(number.sum(1l, 2));
		System.out.println(number.sum(1, 2,3));
		
	}

}
构造方法的重载

我们一直在使用构造方法,但是之前我们没有定义构造方法,哪里来的呢?

注意事项:

A:如果我们没有给出构造方法,系统会自动提供一个无参的构造方法

B:如果我们给出了构造方法,系统将不会再自动提供无参的构造方法

注意:这个时候,大家如果写的是有参数的构造函数,就必须自己给出无参的构造函数 建议永远给出无参构造函数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹿鹿熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值