java 学习
Java 面向对象
1.什么是对象?
世界万物皆对象,只要是我们看得到摸得到的实物都可以称之为对象。对象的两个主要部件为属性(特征)和行为(方法)
例如我们现实生活中人,人有身高,国籍,胖瘦等属性,人有可以走路,可以看,可以跑等行为
2.类与对象关系?
类是具有相同属性和行为的对象的集合,类是对象的抽象,对象是类的实例。
例如:人类包含学生,老师,工人等对象,学生,老师,工人则是人类的实例。
3.向类中添加成员变量
格式:访问修饰符+(可选修饰符--可不用写)+数据类型+变量名称。访问修饰符有public,private或protected.
public String name;//定义String类型的变量姓名
public String address; //定义String类型的变量地址
public int age;//定义int类型的变量年龄
4.向类中添加方法
格式:访问修饰符+返回值+方法名称+参数列表
方法的定义必须出现在方法声明后的大括号中
public void mailcheck(){
system.out.println("邮寄支票到"+name+",地址为:\n"+address);
}
5.实例化对象
使用new关键字实例化一个对象,new运算符在内存中创建一个对象并返回对新创建的对象的一个引用
Employee e;//声明一个Employee引用
e=new Employee();//使用new关键字将该引用赋值给一个新的对象
6.this引用
每个对象可以使用this关键字引用它本身
dx4es public void mailcheck(){ system.out.println("邮寄支票到"+this.name+"的地址为:"+this.address) }
7.package
在Java中,每个类属于一个包,包的命名一般采用域名倒置法,使用import语句将包导入类中。包的基本用途为:
1. 提供了一个组织类的机制;
2. 为包中的类提供了一个命名空间(同名文件可以在不同包中共存)
8.综合应用
实例化一个student[]对象 给对象赋值,并遍历出来
public class Student2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Student [] stu=new Student[2];
Student st=null;//声明变量st类型
for (int i = 0; i < stu.length; i++) {
st=new Student();//创建一个新的对象
System.out.println("请输入学生姓名:");
String name=sc.next();
System.out.println("请输入学生成绩:");
double javascore=sc.nextDouble();
st.name=name;//将接收的值赋给st对象的属性
st.javascore=javascore;
stu[i]=st; //将st对象存放在stu数组中
}
for (Student s : stu) {
System.out.println(s.name+s.javascore);
}
=============================================================
9.方法重载
当一个类有两到多个同名但是有不同参数列表的方法时,就是方法的重载。
1. 函数名称相同,参数个数相同 但是类型不同。两个函数不是同一个函数可以通过语法编译。
fun(int a,int b)与fun(String a,int b)
- 函数名称相同,参数个数不相同 两个函数不是同一个函数可以通过语法编译
fun(int a, int b)与fun(int a)
10.构造器
构造器是类中的一个特殊的方法,该方法在对象实例化时被调用。构造器的用途是当对象实例化时,初始化对象中的成员变量。构造器负责实例化一个对象,构造器与方法不同之处在于:
1.构造器的名称必须与类名相同。
2.构造器不能申明返回值,也不能返回void。
public class people{
public String name;
public int sex;
public people(){
System.out.println("这是无参构造器")
}
public people(int high){
System.out.println("这是有参的构造器")
}
}
PS:如果我们编写了一个类,但是在类中没有添加构造器,编译器会给类添加一个默认的无参构造器。如果我们自己在类中添加了一到多个构造器,那么编译器就不会为类添加默认构造器,例如
public class Television{
public int channel;
public Televeision(int c){
channel=c
}
}
11.继承
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承。
已有的类称为父类也可以称为基类,超类,子类也可以称为诞生类。继承通过extends关键字来实现。使用继承不仅可以重用已有的代码,从而避免重复还可以创建一个更容易维护和修改的代码的程序。
eg:
public class Animal {
String name;
int age;
String color;
public void show(String name){
System.out.println(name);
}
}
==================================================
public class Dog extends Animal {
public Dog(String name){
super.name=name;
System.out.println(super.name);
}
@Override
public void show(String name){
System.out.println(name+" "+age+"岁"+" "+"汪汪汪");
}
}
PS:“is a”关系是一个简单而强大的规则,用于判断父类和子类的继承关系是否正确,在Java中一个类只能有一个父类,多继承在Java中是不允许的。但并不意味着一个类没有祖父,曾祖父。Object类在java.lang包中,是每个Java类的父类,要么是直接的父类,要么就是间接的父类
12.方法重写
子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为就成为方法重写。@override重写保证父子类的方法是一样的。
重写与重载区别:
1. 重载发生在同一个类中,重写一定发生在子类与父类之间
2. 重载是方法名一样,参数不一致重写是必须一模一样。
13.this与super
如果一个构造器用this关键字来调用本类中的其它构造器,那么这个this语句必须是本构造器的第一行,否则会产生一个错误。super用于子类访问父类的属性和方法。this与super必须放在函数的第一行。super与this不能同时存在。
public class Salary extends Exployee{
public String name;
public String address;
public int SSN;
public int number;
public void mailCheck(){
System.out.println("在Employee的mailCheck内:"+super.toString());
System.out.println("邮寄支票到:"+this.name+" "+this.address);
}
}
14.final
如果我们编写的方法中有很重要的行为,我们不想子类重写,可以将方法声明为最终方法,最终方法不能被子类重写。
posted on 2016-12-11 16:46 Tony_Xu1206 阅读(133) 评论(0) 收藏 举报
浙公网安备 33010602011771号