java入门---类和对象

本文介绍了Java的面向对象编程思想,对比了面向过程与面向对象的区别。详细讲解了类和对象的概念,以及它们在内存中的表现。接着,阐述了类的定义、成员(包括属性和方法)、访问权限修饰符和成员变量的类型。通过实例展示了如何创建对象并调用属性和方法。此外,还提供了几个练习,如创建动物类展示信息、计算圆的周长和面积以及比较两数大小。文章深入浅出地介绍了Java面向对象编程的基础知识。
摘要由CSDN通过智能技术生成

1 java面向对象

1.1 面向对象的思想

面向对象和面向过程区别

面向对象是相对于面向过程,面向过程指定功能行为,面向对象将功能封装到对象中,强调的是功能的对象

例: 大象放进冰箱

面向过程:

​ 打开门 —大象放进去—关闭门

面向对象:

​ class 大象{

​ }

​ class 冰箱{

​ }

面向对象三大特征:

​ 1.封装

​ 2.继承

​ 3.多态

1.2 类和对象

面向对象的两个核心:类和对象

类:类是对一类事物的描述,抽象的概念

​ --具有相同属性和行为对象的集合

对象:实际在该类事物中的每个个体、也称为一个实例(万物皆对象)

​ --类中的一个实例

类和对象的区别:类和对象的抽象(类型)

​ 例:

​ int num=10;//int 是类型 num是对象

1.2.1类的定义

语法:

[访问权限修饰符][修饰符]class 类名{
	类的成员(5个) 类中不能直接写逻辑代码    
}

访问权限修饰符:public(公共) package默认(不加)
修饰符:abstract(抽象)  final(最终)   不能同时出现
class:修饰类的一个关键字
类名:符合定义标识符的规则

1.2.2类中的成员(5个)

class Student {
	//5个成员
	//1属性
	String name;
	int age;
	String sexy;
	//2方法
	public void study() {
		
	}
	//3构造器
	public Student() {
		
	}
	//4代码块
	{
		int n=10;
		System.out.println(n);
	}
	//5内部类
	class Dog{
		
	}
}

1.2.3 属性(成员之一)

语法:

[访问权限修饰符][修饰符] 类型 属性名;
访问权限修饰符:private(私有),默认(同包),protected(子类),public(公共)
修饰符:static(静态),final(常态),trasient(不能被序列化),volatile(线程安全)
类型:
	基本数据类型:
		整型:byte short int long    默认:0
		浮点型:float double  	    默认:0.0
		字符型:char			   默认:空格
		布尔型:Boolean			   默认: flase
	引用数据类型:
		{类、数组、接口……} 		 默认:null
变量:
	成员变量
	局部变量
区别:
	相同点:
			声明方式相同:类型  变量名 = 初值;
			注意:成员变量可以加访问权限修饰符;但是局部变量不能加访问权限修饰符
	不同点:
			1)声明的位置不同
				成员变量:声明在类中,方法外
				局部变量:方法中,或者方法参数
			2)在内存中存储的位置不同
				成员变量:内存的栈中存储  成员变量在创建完对象之后会有默认值
				局部变量:内存的堆中存储  必须初始化赋值
			3)初始值不同
				成员变量:创建完对象之后又初始值
				局部变量:没有初始值
			4)生命周期不同
				成员变量:成员变量随着对象的创建而创建,对象的销毁而销毁
				局部变量:随着方法的调用而创建,方法调用结束而销毁
	补充:作用域问题: 
		 原则:就近原则
  • 练习: 创建一个动物类,声明昵称和年龄属性,并定义一个方法显示动物信息
public class TestAnimal {
	public static void main(String[] args) {
		Animal a1=new Animal();
		a1.name="小狗";
		a1.age=1;
		a1.show();
		Animal a2=new Animal();
		a2.name="小猫";
		a2.age=2;
		a2.show();
	}
}
class Animal {
		//属性
		String name;
		int age;
		//方法---显示动物名称
		public void show() {
			System.out.println(age+"==="+name);
		}
}

1.2.4 方法(成员之二)

语法:
	[访问权限修饰符][修饰符] 返回值 类型 方法名(类型 参数,类型 参数……){
        //方法体    实现方法功能的代码
	}
访问权限修饰符:private(私有),默认(同包),protected(子类),public(公共)
修饰符:static(静态) final(最终) native(底基于C或者C++实现重写)abstract(抽		象) synchronized(线程锁)
返回值 类型:
	无返回值类型:void
	有返回值类型:基本类型(8种),引用类型(无数种)
		在方法体中,必须要使用return值,返回值的类型要与定义方法的返回值类型一致 
方法名:首字母小写,其他单词首字母要大写
参数:局部变量
public class TestCalc{
	public static void main(String[] args) {
		//1创建对象
		Calc c=new Calc();
		//2给属性赋值
		c.n1=10;
		c.n2=8;
		//3调用方法
		//1)
		c.add();//无返回值的方法
		//2)
		int he=c.add2();// 有返回值的方法
		System.out.println(he);
		//3)
		c.add3(c.n1,c.n2);  //有参无返回值 ()中写实参
		//4)
		int he1=c.add4(c.n1, c.n2);
		System.out.println(he1);
	}
}

class Calc {
	int n1;
	int n2;
	//功能实现两数求和
	public void add() { //void 在方法体内实现功能
		System.out.println("两数的和:"+(n1+n2));
	}
	public int add2() {//无参 有返回值的方法,返回两数的和
		return n1+n2;
	}
	//有参无返回值
	public void add3(int a,int b) { //定义的时候无值 形参
		System.out.println("两数和:"+(a+b));
	}
	public int add4(int a,int b) {
		return a+b;
	}
}
  • 练习一:求圆的周长和面积:定义一个圆的半径属性
public class TestCircle {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		Circle a=new Circle();
		System.out.println("请输入圆的半径");
		a.radius=input.nextDouble();
		a.getArea();
		a.getPerimeter();
	}
}
class Circle{
	double radius;
	public void getPerimeter(){
		double perimeter=2*Math.PI*radius;
		System.out.println("圆的周长:"+perimeter);
	}
	public void getArea() {
		double area=Math.PI*Math.pow(radius, 2);
		System.out.println("圆的面积:"+area);
	}
}
  • 练习二:比较两数大小,返回最大值
public class Test2 {
	public static void main(String[] args) {
		Clac a=new Clac();
		a.n1=10;
		a.n2=20;
		a.compare();
	}
}
class Clac{
	double n1;
	double n2;
	public void compare() {
		if(n1>n2) {
			System.out.println(n1+">"+n2+"最大值:"+n1);
		}else {
			System.out.println(n2+">"+n1+"最大值:"+n2);
		}
	}
}
    • 用有参来写

1.2.5 类成员的使用

//属性使用
1、创建类的对象
   类名  对象 = new 类名();
2、调用属性
   对象.属性
3、调用方法:
   对象.方法名();
4、本类中方法之间的调用
   直接调用方法名即可(隐藏this 代表当前对象)

1.2.6 匿名对象的使用

		Calc c = new Calc();
		c.getMax1(10, 5);
		//相当于
		new Calc().getMax1(10, 5);//只使用一次可以用匿名对象,多次使用创建对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bromide-0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值