面向对象的理解
2015-09-13 20:09
309 查看
今天对前几天的内容进行了回顾。有些东西老师讲得时候觉得挺明白的,但是自己写代码的时候还是觉得有点儿困难,猛得一做题不知道从哪儿下手。我觉得还是掌握得不够熟练,所以今天又回顾了一下老师讲的面向对象的内容,以下是我整理的一些知识点。
1.什么是对象 客观世界存在的物体。
2.对象和类的关系 同种对象的集合,是对现实世界中实体的抽象。
3.面向对象的三大特征? 封装性 继承性
多态性
4.封装的好处:a.隐藏类的实现细节 b.方便加入控制语句 c.方便修改实现 d.只能通过规定方法访问数据
5.继承父类黑子类的关系 子类继承父类的属性,但是不继承父类的值
6.构造函数的作用 用来对成员变量进行初始化
7.重构 参数的个数 参数的顺序 参数的类型
有关类的定义的一些知识点;
1.类的定义:关键字class+类名{}
cat c = new cat();//实例化对象,生成一只小猫
2.构造函数 public +类名,用来对成员变量进行初始化
3继承 抽取相同的部分 关键字是extends 举例说明:先定义一个Dog类 然后封装成员变量 private String name; pritvate int age;
然后定义一个void show(){}方法包括方法体,再定义void eat(){System.out.println("ken gu tou")}
用同样的方法定义一个Cat类
然后再在包的下边定义一个Animal的类 ,让Dog类和Cat类继承Animal这个类。在主函数里边实例化对象。给之前的成员变量加上set 和get方法
代码如下:
package com.wj.num1;
class Cat{
private String name;
private int age;
public Cat(int age,String name)//构造函数,用来对成员变量进行初始化
{
this.age = age;//this是指本对象主函数里边创建的,就是那只小猫
this.name = name;
}
public Cat()
{
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setAge(){
}
void show(){
System.out.println("name="+name+"age="+age);
}
}
public class Demo {
public static void main(String[] args) {
Cat c = new Cat(3,"lucy");
//c.age = 12;
c.setAge(-12);
c.show();
Cat c1 = new Cat();
c1.show();
}
}
4.多态 的代码如下
package com.wj.num1;
abstract class Animal{
private String name;
private int age;
abstract public void eat();//方法体
}
class Cat1 extends Animal{
private String name;
private int age;
public void eat()
{
System.out.println("chi yu");
}
}
class Dog1 extends Animal{
private String name;
private int age;
public void eat()
{
System.out.println("ken gu tou");
}
}
public class DuoTaiDemo {
public static void main(String[] args) {
Cat1 c = new Cat1();
Cat1 c1 = new Cat1();
Dog1 d = new Dog1();
Dog1 d1 = new Dog1();
//c.eat();
//c1.eat();
fun(c);
fun(c1);
// d.eat();
// d1.eat();
// fun1(d);
// fun1(d1);
fun(d);
fun(d1);
}
public static void fun(Animal a)
{
a.eat();
}
// public static void fun1(Dog1 d)
// {
// d.eat();
// }
}
1.什么是对象 客观世界存在的物体。
2.对象和类的关系 同种对象的集合,是对现实世界中实体的抽象。
3.面向对象的三大特征? 封装性 继承性
多态性
4.封装的好处:a.隐藏类的实现细节 b.方便加入控制语句 c.方便修改实现 d.只能通过规定方法访问数据
5.继承父类黑子类的关系 子类继承父类的属性,但是不继承父类的值
6.构造函数的作用 用来对成员变量进行初始化
7.重构 参数的个数 参数的顺序 参数的类型
有关类的定义的一些知识点;
1.类的定义:关键字class+类名{}
cat c = new cat();//实例化对象,生成一只小猫
2.构造函数 public +类名,用来对成员变量进行初始化
3继承 抽取相同的部分 关键字是extends 举例说明:先定义一个Dog类 然后封装成员变量 private String name; pritvate int age;
然后定义一个void show(){}方法包括方法体,再定义void eat(){System.out.println("ken gu tou")}
用同样的方法定义一个Cat类
然后再在包的下边定义一个Animal的类 ,让Dog类和Cat类继承Animal这个类。在主函数里边实例化对象。给之前的成员变量加上set 和get方法
代码如下:
package com.wj.num1;
class Cat{
private String name;
private int age;
public Cat(int age,String name)//构造函数,用来对成员变量进行初始化
{
this.age = age;//this是指本对象主函数里边创建的,就是那只小猫
this.name = name;
}
public Cat()
{
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setAge(){
}
void show(){
System.out.println("name="+name+"age="+age);
}
}
public class Demo {
public static void main(String[] args) {
Cat c = new Cat(3,"lucy");
//c.age = 12;
c.setAge(-12);
c.show();
Cat c1 = new Cat();
c1.show();
}
}
4.多态 的代码如下
package com.wj.num1;
abstract class Animal{
private String name;
private int age;
abstract public void eat();//方法体
}
class Cat1 extends Animal{
private String name;
private int age;
public void eat()
{
System.out.println("chi yu");
}
}
class Dog1 extends Animal{
private String name;
private int age;
public void eat()
{
System.out.println("ken gu tou");
}
}
public class DuoTaiDemo {
public static void main(String[] args) {
Cat1 c = new Cat1();
Cat1 c1 = new Cat1();
Dog1 d = new Dog1();
Dog1 d1 = new Dog1();
//c.eat();
//c1.eat();
fun(c);
fun(c1);
// d.eat();
// d1.eat();
// fun1(d);
// fun1(d1);
fun(d);
fun(d1);
}
public static void fun(Animal a)
{
a.eat();
}
// public static void fun1(Dog1 d)
// {
// d.eat();
// }
}
相关文章推荐
- 【C/C++学院】0802-链式栈/链表队列以及优先队列/封装链表库
- 如何设置Java虚拟机内存以适应大程序的装载
- Java初体验
- 1i/o2
- 多控制器管理
- leetcode刷题,总结,记录,备忘 77
- Java运行环境绿色部署配置
- HDU 5443 The Water Problem
- Android StateListDrawable遇到的问题
- Apache服务器卸载后在管理中仍存在的问题解决
- i/o
- oc内存管理
- Java网络编程之TCP
- HDF5 notes
- 我对python线程池的理解
- 黑马程序员─────Java基础───字符串
- JavaScript学习笔记8-jQuery内容过滤选择器、可见性过滤选择器深度解析
- java中的Random类
- 2015腾讯技术面笔试题
- [转]SSIS package taking forever to load when you open it?