面向对象:
面向过程和面向对象都是程序设计的一种风格;
OP(面向对象)
面向过程:(POP)
是以函数(一个一个的功能)为结构进行代码组织的语言。
代表语言: C语言
相对于面向对象语言,扩展能力较差,后期维护难度较大。
面向对象:(OOP)
是以类为单位进行组织的;
类:一类问题/分类 (String,Math,Arrays,Scanner...)
public classs{
定义人类属性(变量)
人有什么功能(方法)
}
典型代表语言:c++,java,Python...
动物类{
动物的共有属性和功能;
}
猫 继承 动物{
猫特有功能和属性;
}
狗 继承 动物{
狗特有属性与功能;
}
适合解决复杂问题,扩展性更好。
面向过程适合简单的问题;
面向对象适合复杂问题,先宏观分类设计,具体落地需结合面向过程一起实现。
类和对象:
类:对事物的抽象描述(定义)
对象:是实物就是对象,能碰到的都是对象。
类中可以定义:
变量,属性,名词,方法,行为,动词;
构造方法
块 没有名字的代码块
类与方法:
package com.company;
import java.util.Scanner;
public class day5 {
//方法
public static void main(String[] args) {
//对象:
//创建对象
animal pig=new animal();
/**
* animal pig 定义一个对象,命名为pig
* new animal() new关键字用来创造对象,独立地在内存中开辟一块空间;
*/
//调用对象中的属性或方法
pig.age=10;
pig.name="刘伊珂";
//pig.voice();
//定义一组对象;
animal [] oth=new animal[3];
animal cat=new animal("小白",10);
Scanner input=new Scanner(System.in);
for(int x=0;x<3;x++){
animal ani=new animal(input.next(),input.nextInt());
oth[x]=ani;
}
}
//重载:
/**
* 方法取名相同时,参数类型、顺序、个数的不同都算是方法重载;
* 方法重载与方法的类型无关,与返回值类型无关;
*/
public void sum(int a,int b){
}
public int sum(int a,int b,int c){
return 1;
}
}
//创建一个类
class animal {
/**
* 属性,功能(成员变量)在类中定义则有初始值:
* int=long=short=0;
* double=float=0.0;
* boolean=false;
* String=null;
* char="";
*/
String name;
int age;
boolean ifplant;
char n;
//定义方法;在方法中定义变量为局部变量,无初始值;
public void voice(){
System.out.println("hello");
}
//类中的成员变量和方法都通过创建的变量进行引用
/**
* animal() 在无定义的情况下,会默认有个构造方法:
* 定义:构造方法名字与类名相同,且没有返回值,但不需要使用void修饰。
* 特点:
* 类中无定义构造方法时会默认有一个无参的构造方法;
* 我们还可定义一个有参的构造方法;
* 一旦定义了有参的构造方法,则系统默认无参构造方法则会失效;
*
*/
public animal(){
System.out.println("无参构造方法:"+name);
}
//一旦在构造方法名前加void,则就不是构造方法了。
public animal(String n,int a){
name=n;
age=a;
System.out.println("有参构造方法:"+name);
}
}