面向对象
1、其三个主要特性:封装性、继承性、多态性。其中继承分为单继承和多继承,多态性分为方法重载和对象多态。
2、类由属性和方法组成。
3、栈里存的都是局部变量。
4、封装之后的属性必须通过getter和setter进行访问
//构造方法
1、构造函数功能:是对对象进行初始化,且只执行一次。
2、多构造函数在类中的体现就是重载形式。
3、java中一般函数名首字母小写
4、构造函数是可以私有化的,但是一旦私有化其他程序就无法对该类创建对象,原因:无法对创建的对象进行初始化(要用setter和getter方法)
5、匿名对象:
public class NiMing20
{
public static void main(String[] args)
{
new Person("闫哲",21,"男").tell();//匿名对象,其中匿名对象只使用一次,只在堆内存中开辟空间,不存在栈内存的引用
}
}
非匿名对象:
public class ChongZai2
{
public static void main(String[] args)
{
Person per=new Person();//per为对象,声明并实例化对象
per.setName("闫哲");
per.setAge(21);
per.setSex("男");
per.tell();//输出信息
}
}
均输出结果:姓名:闫哲 年龄:21 性别:男
代码如下:
class Person{
private String name;
private int age;
private String sex;
public Person(){}
public Person(String name,int age,String sex)
{
this.setName(name);
this.setAge(age);
this.setSex(sex);
}
public void tell()
{
System.out.println("姓名:"+getName()+" 年龄:"+getAge()+" 性别:"+getSex());
}
public String getName()
{
return name;
}
public void setName(String n)
{
name=n;
}
public int getAge()
{
return age;
}
public void setAge(int a)
{
if(a>=0&&a<120)
{
age=a;
}
}
public String getSex()
{
return sex;
}
public void setSex(String m)
{
sex=m;
}
}
public class NiMing20
{
public static void main(String[] args)
{
new Person("闫哲",21,"男").tell();//匿名对象,其中匿名对象只使用一次,只在堆内存中开辟空间,不存在栈内存的引用
}
}
实例(学生信息):
class Student{//类
private String stuno;//封装,私有化
private String name;
private float math;
private float english;
private float computer;
public Student(){}//定义无参构造
public Student(String stuno,String name,float math,float english,float computer){//构造函数并为属性初始化
this.setStuno(stuno);
this.setName(name);
this.setMath(math);
this.setEnglish(english);
this.setComputer(computer);
}
public String getName(){
return name;//设置编号
}
public void setName(String n)
{
name=n;//取得编号
}
public String getStuno(){
return stuno;
}
public void setStuno(String a)
{
stuno=a;
}
public float getMath(){
return math;
}
public void setMath(float b)
{
math=b;
}
public float getEnglish(){
return english;
}
public void setEnglish(float c)
{
english=c;
}
public float getComputer(){
return computer;
}
public void setComputer(float d)
{
computer=d;
}
public float sum(){
return math+english+computer;
}
public float avg(){
return this.sum()/3;
}
public float max(){
float max=math;
max=max>computer?max:computer;
max=max>english?max:english;
return max;
}
public float min(){
float min=math;
min=min<computer?min:computer;
min=min<english?min:english;
return min;
}
}
public class ShiLi
{
public static void main(String[] args)
{
Student stu=null;
stu=new Student("asfd-56","李兴华",95.0f,19.0f,56.0f);//实例化Student对象,并通过构造方法赋值
System.out.println("编号"+stu.getStuno());//输出
System.out.println("姓名"+stu.getName());
System.out.println("数学成绩"+stu.getMath());
System.out.println("英语成绩"+stu.getEnglish());
System.out.println("计算机成绩"+stu.getComputer());
System.out.println("最高分"+stu.max());
System.out.println("最低分"+stu.min());
}
}
输出结果:
需要注意的问题:1、注意注意构造函数属性的类型(int、float、String)2、getter(定义类型String等)和setter(void)方法的使用