本科大三时自学过java,上研之后就基本没再碰过了,现在想要重新捡起来,所以把这些整理一下,主要是用来督促自己的学习,该资料整理来源于尚硅谷-佟刚的教学视频,仅用来学习。
面向对象的三大特征
-封装(Encapsulation)
-继承(Inheritance)
-多态(Poiymorphism)
类(class)是对一类事物的描述(抽象);对象(object)是该类实物的每个个体(实际存在),也称实例(instance)
【Java类】 属性(比如说一个人的姓名、身高等),也叫做类的成员变量,方法(比如说一个人学习的方法,工作的方法等),也叫类的成员函数
声明类
语法格式
[< 修饰符>] class < 类名>
{
[<属性声明>]
[<构造器声明>]
[<方法声明>]
}
说明:修饰符public:类可以被任意访问
类的正文要用{ }括起来
}
声明属性
语法格式:
[<修饰符>] 类型 < 属性名> [=初值] ;
说明:修饰符 private: 该属性只能由该类的方法访问。
修饰符 public: 该属性可以被该类以外的方法访问。
类型:任何基本类型,如int、boolean或任何类。
举例:
public class Person{
private int age; //声明private变量 age
public String name = “Lila”; //声明public变量 name
}
声明方法
语法格式:
<修饰符> <返回类型> <方法名>([< 参数表>]) {
[< 语句>]
}
说明: 修饰符:public,private,protected 等。
返回类型:return语句传递返回值。没有返回值:void。
对象的创建和使用
-使用 new +构造方法 创建一个新的对象;
-使用 “对象名.对象成员” 的方式访问对象成员(包括属性和方法);
如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰
类的访问机制:
在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(static方法访问非static方法会编译出错)
在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
对象的创建
class Person
{
int age;
void shout()
{
System.out.println(“oh,my god! I am “ + age);
}
}
Person p1 = new Person();//执行完后的内存状态
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的都是变量类型都是引用类型。
对象的使用
创建新的对象之后,我们就可以使用“ 对象名.对象成员 ”的格式,来访问对象的成员
class TestPerson
{
public static void main(String[] args)//上面程序运行的内存布局如下图
{
Person p1 = new Person();
Person p2 =new Person();
p1.age = -30;
p1.shout();
p2.shout();
}
}
匿名对象
我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象, 如:new Person().shout();
如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
我们经常将匿名对象作为实参传递给一个函数调用。
练习
1、创建一个Person类,其定义如下:
要求:(1)创建Person类的对象,设置该对象的name、age和sex属性,调用study方法,输出字符串“studying”,调用showAge()方法显示age值,调用addAge()方法给对象的age属性值增加 i 岁。
(2)创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系。
public class Person {
private String name;
private int age;
private int sex;
void stduy(){
System.out.println("studying");
}
void showAge(){
System.out.println("age:"+age);
}
int addAge(int i){
age=age+i;
return(age);
}
public static void main(String[] args) {
//创建对象1
Person p=new Person();
p.name="Tom";
p.age=3;
p.sex=1;
System.out.println("name:"+p.name+"\n"+"sex:"+p.sex);
p1.study();
p.addAge(3);
p.showAge();//age:6
//创建对象2
Person p1=new Person();
p1.name="Lili";
p1.age=30;
p1.sex=2;
System.out.println("name:"+p1.name+"\n"+"sex:"+p1.sex);
p1.study();
p1.addAge(2);
p1.showAge();//age:31
}
}
2、 利用面向对象的编程方法,设计类Circle计算圆的面积。
public class CircleArea {
double r;
double area;
double CircleAreaCaluate(){
area=2*Math.PI*Math.pow(r,2);
return(area);
}
public static void main(String[] args) {
CircleArea ca=new CircleArea();
ca.r=2.0;
ca.area=0;
ca.CircleAreaCaluate();
System.out.println("r="+ca.r+"\n"+"arae:"+ca.area);
//r=2
//arae:25.132741228718345
}
}