java面向对象小知识

(一).面向对象的由来:
1.60年中期软件危机(software crisis)——落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现的一系列严重问题的现象。
软禁标准化与可重用性得到了工业界的高度认可,避免重复的劳动,缓解软件危机起到了重要作用。
2.万物皆对象
看待万物都可视为对象。在这里插入图片描述
3.使用面向对象思想描述显示世界
基本步骤
(1)发现类
(2)找出属性(名词)
(3)找出行为(动词)
数据抽象的过程。
定义类

//演员类
public calss Actor{
    
    
//共同特性
public String name;
public char sex;
public String job;
public int age;


//共有属性

public void eat(){
    
    ........}
public void performs(){
    
    ..........}

}

4.用类图描述类——UML
这上图
+代表public
-代表private
参考工具:StarUML,Astah(可使用破解版)。

Astah生成的UML图
Astah tool导出将自动生成类
小结:
面向对象的优点:全新的组织代码的方式,为大型程序而生,小程序体会不带面向对象的好处。
面向对象抽象的原则
设计一个类时,不要让该类面向具体的类,而是面向抽象类或者是接口。
(二)示例演示
需求说明
1.定义类并创建对象
2.打印对象的信息
在这里插入图片描述

//第一个类
//创建劳拉和孙悟空的类
//创建游戏角色类Role
public calss Role{
    
    
	/*名称属性*/
	public String name;
	//等级
	public int level;
	//职业
	public String job;
	//释放技能
	public void  sendskill;
public void doSkill(){
    
    
	if(name.equals("劳拉")){
    
    
	System.out.println("劳拉释放了她的必杀技————隐身夺萃刃");
	
	}else if(name.euqals("孙悟空")){
    
    
	System.out.println("孙悟空释放了他的技能————吃俺老孙一棒")
		}
	}
}
//第二个类RoleTest
//实例化
 //声明一个Role类型的变量,Role role1相当于在栈空间中申请了一块空间role1,new Role();相当于在堆空间里分配了一块空间;
 Role role1=new Role();//把申请的地址赋给了role1;
 role1.name="劳拉";
 role1.level=25;
 role.job="考古学家";
 //调用方法释放劳拉的技能
 role.doSkll();
 
//System.out.println(role1)可以打印出哈希码的值
 Role role2;
 role2=new Role();
 role2.name="孙悟空";
 role2.level=99;
 role2.job="齐天大圣";
 //调用方法释放孙悟空的技能
 role2.doSkill();

(三)构造器的使用
构造器的特点:
1.没有返回值
2.方法名和类名一致
示例一

public Role(String name1,int level1,String job1){
    
    
name=name1;
level=level1;
job=job1;
}

//调用
Role role1=new Role("孙悟空","99","齐天大圣"){
    
    
 role1.show();
}

示例二

public class Circle{
    
    
	//圆的半径
	public double radious;
	//圆的周长
	public double perimeter;
	//圆的面积	
	public double area;

	//默认构造
	public Circle(){
    
    
	inputRadious();
	}
	
	//带参构造
	public Circlev2(double radious){
    
    
	if(radious){
    
    
		radious=radious();
	}else{
    
    
	inputradious();
	}
	}
	public void inputradious(){
    
    
	Scanner input=new Scanner(System.in);
	System.out.println("请输入半径");
	radious=input.next.Double();
	input.close();
	}
	public void showPerimeter(){
    
    
	if(radious==0){
    
    
	inputRaius();//如果用户没输入半径,强制用户输入半径
	}
	perimeter=2*Math.PI*radious;
	System.out.println("周长为"+perimeter);
	}
	public void shouArea(){
    
    
	area=radious*radious*Math.PI;
	System.out.println("面积为"+area);
	}
}


//测试类

//(1)构造方法生成
Circlev2 circle=new Circlev2();
circle.showArea();


//(2)重载
public class CircleTest{
    
    
	public static void main(String[] args){
    
    
	Circle circle=new Circle();
	circle.inputRadious();
	circle.shouPerimeter();
	circle.shouArea();
	}
	}

猜你喜欢

转载自blog.csdn.net/qq_44143902/article/details/109076382